Re: [PATCH] Support for basic ALTER TABLE progress reporting.
От | jian he |
---|---|
Тема | Re: [PATCH] Support for basic ALTER TABLE progress reporting. |
Дата | |
Msg-id | CACJufxHSrRPSf0qJtBdMOQdmHDzKTUg8hAZUqSguZ76uKE8GNg@mail.gmail.com обсуждение исходный текст |
Ответ на | [PATCH] Support for basic ALTER TABLE progress reporting. (Jiří Kavalík <jkavalik@gmail.com>) |
Список | pgsql-hackers |
On Mon, Jun 2, 2025 at 3:35 PM Jiří Kavalík <jkavalik@gmail.com> wrote: > What I changed: > > `commands/tablecmds.c` > - start and end reporting inside `ATRewriteTables()` > - report blocks total, blocks and tuples scanned and possibly tuples written in `ATRewriteTable` > - add at least phase info in `validateForeignKeyConstraint`, possibly more if the check cannot be done by left join > hi. similar to DoCopyTo, processed as uint64, in ATRewriteTable, numTuples should be also uint64 not int? + pgstat_progress_update_param(PROGRESS_CLUSTER_HEAP_TUPLES_WRITTEN, + numTuples); + Later we may do constraint checks in ``foreach(l, tab->constraints)``. putting it after table_tuple_insert would be more appropriate, IMHO. static void ATRewriteTables(AlterTableStmt *parsetree, List **wqueue, LOCKMODE lockmode, AlterTableUtilityContext *context) { ListCell *ltab; /* Go through each table that needs to be checked or rewritten */ foreach(ltab, *wqueue) { AlteredTableInfo *tab = (AlteredTableInfo *) lfirst(ltab); /* Relations without storage may be ignored here */ if (!RELKIND_HAS_STORAGE(tab->relkind)) continue; /* Start progress reporting */ pgstat_progress_start_command(PROGRESS_COMMAND_CLUSTER, tab->relid); pgstat_progress_update_param(PROGRESS_CLUSTER_COMMAND, PROGRESS_CLUSTER_COMMAND_ALTER_TABLE); } Perhaps this is a bit early—we haven't completed the error checks yet. we have several "ereport(ERROR..." in below. maybe place it before ATRewriteTable, IMHO.
В списке pgsql-hackers по дате отправления: