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 <[email protected]> Reviewed-by: Alexander Korotkov <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 17 Branch ------ REL_18_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/94c02de89c2632eeb870899c89224ca1a23d2ae1 Modified Files -------------- src/bin/pg_dump/pg_dump.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
