agora inbox for [email protected]
help / color / mirror / Atom feedintarray planning/exeuction problem with multiple operators
1927+ messages / 4 participants
[nested] [flat]
* intarray planning/exeuction problem with multiple operators
@ 2015-07-13 06:12 Jeff Janes <[email protected]>
0 siblings, 2 replies; 1927+ messages in thread
From: Jeff Janes @ 2015-07-13 06:12 UTC (permalink / raw)
To: [email protected]; [email protected]; pgsql-hackers
I've found an interesting performance problem in the intarray extension
module. It doesn't seem to be version dependent, I've verified it in 9.4.4
and 9.6devel.
If I do a query that involves both an = op and a @@ op ANDed together, it
gives a high cost estimate, which is justified by the slow runtime. If I
omit the @@ it gives a low estimate, also justified. If I trick it into
thinking it cannot use the index to satisfy the @@ op, then it gives a low
estimate and low runtime, applying the @@ in the filter step and only the
fast = in the bitmap index scan.
Now it could use the index for the fast = operation and apply the @@ in the
recheck, rather than the filter. But I guess it doesn't think of that,
despite knowing that applying the @@ in index operation is slow.
So it seems to be missing a trick someplace, but I don't if it reasonable
to expect it to find that trick, or how easy/hard it would be to implement.
The proposed selectivity estimate improvement patch for @@ does not fix
this (and evaluating that patch was how I found this issue.)
Set up:
create table foobar as
select (
select
array_agg(floor(sqrt(random()*10000000+g.y/1000000+f.x/10000000))::int)
from generate_series(1,10) g(y)
) foo
from generate_series(1,10000000) f(x);
create index on foobar using gin(foo gin__int_ops);
analyze;
You can knock an order of magnitude off from the table size and should
still be able to see the problem.
example:
explain(analyze, buffers) select * from foobar where foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}' and foo @@
'!1'::query_int;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
Seq Scan on foobar (cost=0.00..263637.00 rows=1 width=61) (actual
time=9717.957..9717.957 rows=0 loops=1)
Filter: ((foo @@ '!1'::query_int) AND (foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}'::integer[]))
Rows Removed by Filter: 10000000
Buffers: shared hit=64 read=113573
I/O Timings: read=361.402
Planning time: 0.101 ms
Execution time: 9717.991 ms
(7 rows)
explain(analyze, buffers) select * from foobar where foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}' ;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on foobar (cost=112.01..116.02 rows=1 width=61) (actual
time=0.027..0.027 rows=0 loops=1)
Recheck Cond: (foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}'::integer[])
Buffers: shared hit=21
-> Bitmap Index Scan on foobar_foo_idx (cost=0.00..112.01 rows=1
width=0) (actual time=0.023..0.023 rows=0 loops=1)
Index Cond: (foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}'::integer[])
Buffers: shared hit=21
Planning time: 0.097 ms
Execution time: 0.061 ms
If I trick it into thinking the @@ operator cannot be used in th eindex,
then it gets really fast again:
explain(analyze, buffers) select * from foobar where foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}' and foo||'{}'
@@ '!1'::query_int;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on foobar (cost=112.01..116.03 rows=1 width=61) (actual
time=0.082..0.082 rows=0 loops=1)
Recheck Cond: (foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}'::integer[])
Filter: ((foo || '{}'::integer[]) @@ '!1'::query_int)
Buffers: shared hit=21
-> Bitmap Index Scan on foobar_foo_idx (cost=0.00..112.01 rows=1
width=0) (actual time=0.080..0.080 rows=0 loops=1)
Index Cond: (foo =
'{22046,26347,6816,21401,18802,31318,30628,8027,22217,20984}'::integer[])
Buffers: shared hit=21
Planning time: 0.139 ms
Execution time: 0.129 ms
Cheers,
Jeff
^ permalink raw reply [nested|flat] 1927+ messages in thread
* Re: intarray planning/exeuction problem with multiple operators
@ 2015-07-13 11:01 Uriy Zhuravlev <[email protected]>
parent: Jeff Janes <[email protected]>
1 sibling, 0 replies; 1927+ messages in thread
From: Uriy Zhuravlev @ 2015-07-13 11:01 UTC (permalink / raw)
To: pgsql-hackers
On Sunday 12 July 2015 23:12:41 Jeff Janes wrote:
> I've found an interesting performance problem in the intarray extension
> module. It doesn't seem to be version dependent, I've verified it in 9.4.4
> and 9.6devel.
Hello.
Look at my patch. Maybe he solves this problem.
https://commitfest.postgresql.org/5/253/
--
Uriy Zhuravlev
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
^ permalink raw reply [nested|flat] 1927+ messages in thread
* Re: intarray planning/exeuction problem with multiple operators
@ 2015-07-13 16:53 Tom Lane <[email protected]>
parent: Jeff Janes <[email protected]>
1 sibling, 0 replies; 1927+ messages in thread
From: Tom Lane @ 2015-07-13 16:53 UTC (permalink / raw)
To: Jeff Janes <[email protected]>; +Cc: [email protected]; [email protected]; pgsql-hackers
Jeff Janes <[email protected]> writes:
> I've found an interesting performance problem in the intarray extension
> module. It doesn't seem to be version dependent, I've verified it in 9.4.4
> and 9.6devel.
Seems like this isn't specifically an issue for intarray, but rather one
with the core GIN code not being smart about the combination of selective
and unselective index conditions. In particular, it seems like the smart
thing for GIN to do with this example is just ignore the @@ condition
altogether so far as the index search goes, and mark all the results as
needing recheck so that the @@ operator gets applied as a filter.
You could also complain about the core planner not considering leaving
some potentially-indexable quals out of the actual index condition,
but TBH I don't see that that would be a useful use of planner cycles.
In almost every case it would mean that if there are K quals potentially
usable with a given index, we'd cost out 2^K-1 index paths and immediately
reject all but the use-em-all alternative. That's a lot of cycles to
spend to handle a corner case. It's always been assumed to be the index
AM's problem to optimize use of the index quals it's handed, and I don't
see why that shouldn't be true here.
> The proposed selectivity estimate improvement patch for @@ does not fix
> this (and evaluating that patch was how I found this issue.)
Nah, it wouldn't: the cost estimates are correct, in the sense that
gincostestimate realizes that GIN will be horribly stupid about this.
regards, tom lane
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v52 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--gp2pyozrd5pweboh
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v52-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
* [PATCH v51 05/10] invert meaning of index_create flag bit
@ 2026-04-03 19:08 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 1927+ messages in thread
From: Álvaro Herrera @ 2026-04-03 19:08 UTC (permalink / raw)
---
src/backend/catalog/index.c | 20 +++++++++++---------
src/backend/catalog/toasting.c | 2 +-
src/backend/commands/indexcmds.c | 1 -
src/include/catalog/index.h | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 4b8ed2c7660..5a7c9d81917 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -715,9 +715,9 @@ UpdateIndexRelation(Oid indexoid,
* already exists.
* INDEX_CREATE_PARTITIONED:
* create a partitioned index (table must be partitioned)
- * INDEX_CREATE_REPORT_PROGRESS:
- * update the backend's progress information during index build.
-
+ * INDEX_CREATE_SUPPRESS_PROGRESS:
+ * don't report progress during the index build.
+ *
* constr_flags: flags passed to index_constraint_create
* (only if INDEX_CREATE_ADD_CONSTRAINT is set)
* allow_system_table_mods: allow table to be a system catalog
@@ -763,7 +763,7 @@ index_create(Relation heapRelation,
bool invalid = (flags & INDEX_CREATE_INVALID) != 0;
bool concurrent = (flags & INDEX_CREATE_CONCURRENT) != 0;
bool partitioned = (flags & INDEX_CREATE_PARTITIONED) != 0;
- bool progress = (flags & INDEX_CREATE_REPORT_PROGRESS) != 0;
+ bool progress = (flags & INDEX_CREATE_SUPPRESS_PROGRESS) == 0;
char relkind;
TransactionId relfrozenxid;
MultiXactId relminmxid;
@@ -1454,13 +1454,15 @@ index_create_copy(Relation heapRelation, bool concurrently,
}
/*
- * Note: The current callers do not need INDEX_CREATE_REPORT_PROGRESS. If
- * 'concurrently' is true, there is no build at all. Otherwise the index
- * build is a sub-command of REPACK. The current infrastructure does not
- * allow two commands to report their progress at the same time.
+ * The current callers do not need to report progress: if 'concurrently' is
+ * true, there is no build at all to report about; and otherwise the index
+ * build is a sub-command of REPACK, and the current progress reporting
+ * infrastructure does not allow two commands to report their progress at
+ * the same time.
*/
if (concurrently)
- flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT;
+ flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT |
+ INDEX_CREATE_SUPPRESS_PROGRESS;
/*
* Now create the new index.
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index 51b27a8c71c..dcee536fd3f 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -332,7 +332,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
collationIds, opclassIds, NULL, coloptions, NULL, (Datum) 0,
- INDEX_CREATE_IS_PRIMARY | INDEX_CREATE_REPORT_PROGRESS, 0,
+ INDEX_CREATE_IS_PRIMARY, 0,
true, true, NULL);
table_close(toast_rel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 932924c13e0..cba379810c7 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1231,7 +1231,6 @@ DefineIndex(ParseState *pstate,
flags |= INDEX_CREATE_PARTITIONED;
if (stmt->primary)
flags |= INDEX_CREATE_IS_PRIMARY;
- flags |= INDEX_CREATE_REPORT_PROGRESS;
/*
* If the table is partitioned, and recursion was declined but partitions
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index 7ebe4f0bd87..9f538dac798 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -71,7 +71,7 @@ extern void index_check_primary_key(Relation heapRel,
#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
#define INDEX_CREATE_PARTITIONED (1 << 5)
#define INDEX_CREATE_INVALID (1 << 6)
-#define INDEX_CREATE_REPORT_PROGRESS (1 << 7)
+#define INDEX_CREATE_SUPPRESS_PROGRESS (1 << 7)
extern Oid index_create(Relation heapRelation,
const char *indexRelationName,
--
2.47.3
--r2slln3zpmilwu22
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
filename="v51-0006-Error-out-any-process-that-would-block-at-REPACK.patch"
^ permalink raw reply [nested|flat] 1927+ messages in thread
end of thread, other threads:[~2026-04-03 19:08 UTC | newest]
Thread overview: 1927+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2015-07-13 06:12 intarray planning/exeuction problem with multiple operators Jeff Janes <[email protected]>
2015-07-13 11:01 ` Uriy Zhuravlev <[email protected]>
2015-07-13 16:53 ` Tom Lane <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v51 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
2026-04-03 19:08 [PATCH v52 05/10] invert meaning of index_create flag bit Álvaro Herrera <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox