Refactor relation opening for VACUUM and ANALYZE

Michael Paquier <michael@paquier.xyz>

Commit: e3a25ab9ea56ac540dc683cdf6f6a4b923bd22be
Author: Michael Paquier <michael@paquier.xyz>
Date: 2018-10-01T23:53:38Z
Releases: 12.0
Refactor relation opening for VACUUM and ANALYZE

VACUUM and ANALYZE share similar logic when it comes to opening a
relation to work on in terms of how the relation is opened, in which
order locks are tried and how logs should be generated when something
does not work as expected.

This commit refactors things so as both use the same code path to handle
the way a relation is opened, so as the integration of new options
becomes easier.

Author: Michael Paquier
Reviewed-by: Nathan Bossart
Discussion: https://postgr.es/m/20180927075152.GT1659@paquier.xyz

Files

PathChange+/−
src/backend/commands/analyze.c modified +6 −49
src/backend/commands/vacuum.c modified +109 −60
src/include/commands/vacuum.h modified +2 −0

Discussion