| From: | Alexander Pyhalov <a(dot)pyhalov(at)postgrespro(dot)ru> |
|---|---|
| To: | Matheus Alcantara <matheusssilv97(at)gmail(dot)com> |
| Cc: | Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>, Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Asynchronous MergeAppend |
| Date: | 2025-12-23 08:50:39 |
| Message-ID: | d5c0bfca6ee15d62df1ba72e540b4ddf@postgrespro.ru |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Matheus Alcantara писал(а) 2025-12-19 16:45:
> On Thu Dec 18, 2025 at 6:56 AM -03, Alexander Pyhalov wrote:
>>> + noccurred = WaitEventSetWait(node->ms_eventset, -1 /* no timeout */
>>> ,
>>> occurred_event,
>>> + nevents, WAIT_EVENT_APPEND_READY);
>>>
>>> Should we use the same WAIT_EVENT_APPEND_READY or create a new wait
>>> event for merge append?
>>
>> I'm not sure that new wait event is needed - for observability I think
>> it's not critical
>> to distinguish Append and MergeAppend when they waited for foreign
>> scans. But also it's perhaps
>> doesn't do any harm to record specific wait event.
>>
> Ok, I think that we can keep this way for now and let's see if a new
> wait event is really needed.
>
>>> I've created Appender and AppenderState types that are used by
>>> Append/MergeAppend and AppendState/MergeAppendState respectively (I
>>> should have think in a better name for these base type, ideas are
>>> welcome). The execAppend.c was created to have the functions that can
>>> be
>>> reused by Append and MergeAppend execution. I've tried to remove
>>> duplicated code blocks that was almost the same and that didn't
>>> require
>>> much refactoring.
>>
>> Overall I like new Appender node. Splitting code in this way really
>> helps to avoid code duplication.
>> However, some similar code is still needed, because logic of getting
>> new
>> tuples is different.
>>
Hi.
I've looked through updated patch. Tested it (also with our fdw).
Overall looks good.
In execAppend.c there's still reference to as_valid_subplans. Also we
could perhaps use palloc0_array() in some more places, for example, for
for state->asyncrequests and state->asyncresults.
--
Best regards,
Alexander Pyhalov,
Postgres Professional
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fujii Masao | 2025-12-23 08:51:27 | Re: Two issues with version checks in CREATE SUBSCRIPTION |
| Previous Message | Chao Li | 2025-12-23 08:48:16 | Re: Sequence Access Methods, round two |