Sami Imseih <samims...@gmail.com> wrote: > > pgstat_progress_start_command() is called twice: First with > > cmdtype=PROGRESS_COMMAND_CLUSTER, second with > > PROGRESS_COMMAND_CREATE_INDEX. The first happens in cluster_rel() the second > > in cluster_rel() -> rebuild_relation() -> finish_heap_swap() -> > > reindex_relation() -> reindex_index(). > > > > It does not matter though, the current design only expects one command. > > When I set a breakpoint on pgstat_progress_start_command and ran a > CLUSTER on a table with a few indexes, I only saw start_command being > called once for PROGRESS_COMMAND_CLUSTER. Then I went back in the > code and realized that reindex_index when called via the CLUSTER command > has progress set to false. So as it stands now, only PROGRESS_COMMAND_CLUSTER > is effectively started when CLUSTER is called. > > ``` > if (progress) > { > const int progress_cols[] = { > PROGRESS_CREATEIDX_COMMAND, > PROGRESS_CREATEIDX_INDEX_OID > }; > const int64 progress_vals[] = { > PROGRESS_CREATEIDX_COMMAND_REINDEX, > indexId > }; > > pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX, > heapId); > pgstat_progress_update_multi_param(2, progress_cols, progress_vals); > }
Ah, got it. So for now the REPACK CONCURRENTLY patch only needs to turn off the progress reporting for PROGRESS_COMMAND_CREATE_INDEX properly. Thanks for checking! -- Antonin Houska Web: https://www.cybertec-postgresql.com