Re: Custom tuplesorts for extensions
Pavel Borisov <pashkin.elfe@gmail.com>
From: Pavel Borisov <pashkin.elfe@gmail.com>
To: Alexander Korotkov <aekorotkov@gmail.com>
Cc: John Naylor <john.naylor@enterprisedb.com>, Matthias van de Meent <boekewurm+postgres@gmail.com>,
Maxim Orlov <orlovmg@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-07-22T15:56:20Z
Lists: pgsql-hackers
Attachments
- v3-0001-Remove-Tuplesortstate.copytup-function.patch (application/octet-stream) patch v3-0001
- v3-0007-Tuplesort-code-beautification.patch (application/octet-stream) patch v3-0007
- v3-0006-Split-tuplesortvariants.c-from-tuplesort.c.patch (application/octet-stream) patch v3-0006
- v3-0004-Move-memory-management-away-from-writetup-and-tup.patch (application/octet-stream) patch v3-0004
- v3-0005-Split-TuplesortPublic-from-Tuplesortstate.patch (application/octet-stream) patch v3-0005
- v3-0003-Put-abbreviation-logic-into-puttuple_common.patch (application/octet-stream) patch v3-0003
- v3-0002-Add-new-Tuplesortstate.removeabbrev-function.patch (application/octet-stream) patch v3-0002
I've looked through the updated patch. Overall it looks good enough. Some minor things: - PARALLEL_SORT macro is based on coordinate struct instead of state struct. In some calls(i.e. from _bt_spools_heapscan) coordinate could appear to be NULL, which can be a segfault on items dereference inside the macro. - state->worker and coordinate->isWorker a little bit differ in semantics i.e.: ..............................................worker............... leader state -> worker........................ >=0.....................-1 coordinate ->isWorker............. 1..........................0 - in tuplesort_begin_index_btree I suppose it should be base->nKeys instead of state->nKeys - Cfbot reports gcc warnings due to mixed code and declarations. So I used this to beautify code in tuplesortvariants.c a little. (This is added as a separate patch 0007) All these things are corrected/done in a new version 3 of a patchset (PFA). For me, the patchset seems like a long-needed thing to support PostgreSQL extensibility. Overall corrections in v3 are minor, so I'd like to mark the patch as RfC if there are no objections. -- Best regards, Pavel Borisov Supabase.
Commits
-
Split tuplesortvariants.c from tuplesort.c
- d0b193c0fad1 16.0 landed
-
Split TuplesortPublic from Tuplesortstate
- ec92fe98356a 16.0 landed
-
Move memory management away from writetup() and tuplesort_put*()
- 097366c45f5d 16.0 landed
-
Put abbreviation logic into puttuple_common()
- 033dd02db224 16.0 landed
-
Add new Tuplesortstate.removeabbrev function
- cadfdd1edff1 16.0 landed
-
Remove Tuplesortstate.copytup function
- d47da3162b4d 16.0 landed