Re: error context for vacuum to include block number
От | Alvaro Herrera |
---|---|
Тема | Re: error context for vacuum to include block number |
Дата | |
Msg-id | 20200316141733.GA14437@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: error context for vacuum to include block number (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: error context for vacuum to include block number
|
Список | pgsql-hackers |
On 2020-Mar-16, Amit Kapila wrote: > 2. > + /* Setup error traceback support for ereport() */ > + update_vacuum_error_cbarg(vacrelstats, VACUUM_ERRCB_PHASE_SCAN_HEAP, > + InvalidBlockNumber, NULL); > + errcallback.callback = vacuum_error_callback; > + errcallback.arg = vacrelstats; > + errcallback.previous = error_context_stack; > + error_context_stack = &errcallback; > .. > .. > + /* Init vacrelstats for use as error callback by parallel worker: */ > + vacrelstats.relnamespace = get_namespace_name(RelationGetNamespace(onerel)); > + vacrelstats.relname = pstrdup(RelationGetRelationName(onerel)); > + vacrelstats.indname = NULL; > + vacrelstats.phase = VACUUM_ERRCB_PHASE_UNKNOWN; /* Not yet processing */ > + > + /* Setup error traceback support for ereport() */ > + errcallback.callback = vacuum_error_callback; > + errcallback.arg = &vacrelstats; > + errcallback.previous = error_context_stack; > + error_context_stack = &errcallback; > + > > I think the code can be bit simplified if we have a function > setup_vacuum_error_ctx which takes necessary parameters and fill the > required vacrelstats params, setup errcallback. Then we can use > update_vacuum_error_cbarg at required places. Heh, he had that and I took it away -- it looked unnatural. I thought changing error_context_stack inside such a function, then resetting it back to "previous" outside the function, was too leaky an abstraction. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: