pgsql: pg_dump: scope indAttNames per index in getIndexes()

Started by Alexander Korotkov21 days ago3 messagescomitters
Jump to latest
#1Alexander Korotkov
aekorotkov@gmail.com

pg_dump: scope indAttNames per index in getIndexes()

getIndexes() declared indAttNames and nindAttNames in the outer
per-table loop, so the names collected for an index on expressions
were carried over to the next plain index in the same table.

This is an internal inconsistency rather than a user-facing bug.
dumpRelationStats_dumper() only walks indexes that have pg_statistic
rows, and ANALYZE only creates those for indexes with expressions,
so the second index in the affected pair is not visited and the stale
array is never consulted.

Fix by moving the two variables into the inner per-index loop so each
iteration starts with a clean slate.

Author: Maksim Melnikov <m.melnikov@postgrespro.ru>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Discussion: /messages/by-id/be5fc489-587e-421f-bbb8-adb43cfd50f4@postgrespro.ru
Backpatch-through: 17

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/298bdd379552148f6043b4595374a7a6fbdd13c3

Modified Files
--------------
src/bin/pg_dump/pg_dump.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

#2Michael Paquier
michael@paquier.xyz
In reply to: Alexander Korotkov (#1)
Re: pgsql: pg_dump: scope indAttNames per index in getIndexes()

Hi Alexander,

On Wed, Jun 03, 2026 at 10:01:44AM +0000, Alexander Korotkov wrote:

pg_dump: scope indAttNames per index in getIndexes()

Author: Maksim Melnikov <m.melnikov@postgrespro.ru>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Discussion: /messages/by-id/be5fc489-587e-421f-bbb8-adb43cfd50f4@postgrespro.ru
Backpatch-through: 17

Regarding this commit, we have as of today:
$ git branch --contains 94c02de89c26
+ REL_18_STABLE
$ git branch --contains 298bdd379552
+ master

And there is nothing on REL_17_STABLE. Am I missing something or
isn't this just a typo in the Backpatch-through tag?
--
Michael

#3Alexander Korotkov
aekorotkov@gmail.com
In reply to: Michael Paquier (#2)
Re: pgsql: pg_dump: scope indAttNames per index in getIndexes()

Hi, Michael!

On Fri, Jun 5, 2026 at 1:54 AM Michael Paquier <michael@paquier.xyz> wrote:

On Wed, Jun 03, 2026 at 10:01:44AM +0000, Alexander Korotkov wrote:

pg_dump: scope indAttNames per index in getIndexes()

Author: Maksim Melnikov <m.melnikov@postgrespro.ru>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Discussion: /messages/by-id/be5fc489-587e-421f-bbb8-adb43cfd50f4@postgrespro.ru
Backpatch-through: 17

Regarding this commit, we have as of today:
$ git branch --contains 94c02de89c26
+ REL_18_STABLE
$ git branch --contains 298bdd379552
+ master

And there is nothing on REL_17_STABLE. Am I missing something or
isn't this just a typo in the Backpatch-through tag?

Thank you for pointing. I've rechecked. The code that this commit is
intended to fix is introduced by 40e27d04b4f6, which appears first in
PG18. So, yes, it's a typo in the backpatch tag. Sorry for that.

------
Regards,
Alexander Korotkov
Supabase