• Michael Paquier's avatar
    Refactor option handling of CLUSTER, REINDEX and VACUUM · a3dc9260
    Michael Paquier authored
    This continues the work done in b5913f61.  All the options of those
    commands are changed to use hex values rather than enums to reduce the
    risk of compatibility bugs when introducing new options.  Each option
    set is moved into a new structure that can be extended with more
    non-boolean options (this was already the case of VACUUM).  The code of
    REINDEX is restructured so as manual REINDEX commands go through a
    single routine from utility.c, like VACUUM, to ease the allocation
    handling of option parameters when a command needs to go through
    multiple transactions.
    
    This can be used as a base infrastructure for future patches related to
    those commands, including reindex filtering and tablespace support.
    
    Per discussion with people mentioned below, as well as Alvaro Herrera
    and Peter Eisentraut.
    
    Author: Michael Paquier, Justin Pryzby
    Reviewed-by: Alexey Kondratov, Justin Pryzby
    Discussion: https://postgr.es/m/X8riynBLwxAD9uKk@paquier.xyz
    a3dc9260
indexcmds.c 124 KB