Обсуждение: pgsql: TupleHashTable: store additional data along with tuple.

Поиск
Список
Период
Сортировка

pgsql: TupleHashTable: store additional data along with tuple.

От
Jeff Davis
Дата:
TupleHashTable: store additional data along with tuple.

Previously, the caller needed to allocate the memory and the
TupleHashTable would store a pointer to it. That wastes space for the
palloc overhead as well as the size of the pointer itself.

Now, the TupleHashTable relies on the caller to correctly specify the
additionalsize, and allocates that amount of space. The caller can
then request a pointer into that space.

Discussion: https://postgr.es/m/b9cbf0219a9859dc8d240311643ff4362fd9602c.camel@j-davis.com
Reviewed-by: Heikki Linnakangas

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e0ece2a981ee9068f50c4423e303836c2585eb02

Modified Files
--------------
src/backend/executor/execGrouping.c | 57 +++++++++++++++++++++++++++++++++++--
src/backend/executor/nodeAgg.c      | 20 ++++++-------
src/backend/executor/nodeSetOp.c    | 17 +++++------
src/backend/executor/nodeSubplan.c  |  2 +-
src/include/executor/executor.h     |  3 ++
src/include/nodes/execnodes.h       | 10 ++-----
6 files changed, 78 insertions(+), 31 deletions(-)


Re: pgsql: TupleHashTable: store additional data along with tuple.

От
Junwang Zhao
Дата:
Hi Jeff,

On Sat, Jan 11, 2025 at 9:32 AM Jeff Davis <jdavis@postgresql.org> wrote:
>
> TupleHashTable: store additional data along with tuple.
>
> Previously, the caller needed to allocate the memory and the
> TupleHashTable would store a pointer to it. That wastes space for the
> palloc overhead as well as the size of the pointer itself.
>
> Now, the TupleHashTable relies on the caller to correctly specify the
> additionalsize, and allocates that amount of space. The caller can
> then request a pointer into that space.
>
> Discussion: https://postgr.es/m/b9cbf0219a9859dc8d240311643ff4362fd9602c.camel@j-davis.com
> Reviewed-by: Heikki Linnakangas
>
> Branch
> ------
> master
>
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/e0ece2a981ee9068f50c4423e303836c2585eb02
>
> Modified Files
> --------------
> src/backend/executor/execGrouping.c | 57 +++++++++++++++++++++++++++++++++++--
> src/backend/executor/nodeAgg.c      | 20 ++++++-------
> src/backend/executor/nodeSetOp.c    | 17 +++++------
> src/backend/executor/nodeSubplan.c  |  2 +-
> src/include/executor/executor.h     |  3 ++
> src/include/nodes/execnodes.h       | 10 ++-----
> 6 files changed, 78 insertions(+), 31 deletions(-)
>

Seems this introduced an indent issue? It should be a whitespace
rather than a tab after the semicolon.

@@ -835,6 +828,7 @@ typedef struct TupleHashTableData
    Oid        *tab_collations; /* collations for hash and comparison */
    MemoryContext tablecxt;     /* memory context containing table */
    MemoryContext tempcxt;      /* context for function evaluations */
+   Size        additionalsize; /* size of additional data */

--
Regards
Junwang Zhao



Re: pgsql: TupleHashTable: store additional data along with tuple.

От
Alvaro Herrera
Дата:
On 2025-Jan-11, Junwang Zhao wrote:

> Seems this introduced an indent issue? It should be a whitespace
> rather than a tab after the semicolon.

Yeah, there's an issue in execGrouping.c as well.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
Subversion to GIT: the shortest path to happiness I've ever heard of
                                                (Alexey Klyukin)