I noticed CFI is missing while scanning pg_class for RELKIND_RELATION and RELKIND_TOASTVALUE. On a database with several thousands of tables, these scans can take a noticeable amount of time. Attached a patch to address this.
Regards,
Lakshmi
Hi Lakshmi,
The patch applies cleanly to HEAD and compiles without warnings. make check passes (one unrelated ICU collation diff).
The two CHECK_FOR_INTERRUPTS() additions in do_autovacuum() look correct and are well-placed at the top of each loop iteration, before any resources are acquired.
I noticed there are other similar catalog scan loops in autovacuum.c that also lack CHECK_FOR_INTERRUPTS():
- The pg_database scan loop around line 1854 - The pg_class scan loop around line 3664
Should those be covered as well?
Updated the patch covering those two as well.
Regards,
Lakshmi
Hi Lakshmi,
The updated patch now covers all four catalog scan loops. Applies cleanly, compiles without warnings, and all 247 regression tests pass.