Обсуждение: [HACKERS] execGrouping.c limit on work_mem

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

[HACKERS] execGrouping.c limit on work_mem

От
Jeff Janes
Дата:
In BuildTupleHashTable


    /* Limit initial table size request to not more than work_mem */
    nbuckets = Min(nbuckets, (long) ((work_mem * 1024L) / entrysize));


Is this a good idea?  If the caller of this code has no respect for work_mem, they are still going to blow it out of the water.  Now we will just do a bunch of hash-table splitting in the process.  That is only going to add to the pain.

Also:

* false if it existed already.  ->additional_data in the new entry has

The field is just ->additional, not ->additional_data

Cheers,

Jeff

Re: [HACKERS] execGrouping.c limit on work_mem

От
Tom Lane
Дата:
Jeff Janes <jeff.janes@gmail.com> writes:
> In BuildTupleHashTable
>     /* Limit initial table size request to not more than work_mem */
>     nbuckets = Min(nbuckets, (long) ((work_mem * 1024L) / entrysize));

> Is this a good idea?  If the caller of this code has no respect for
> work_mem, they are still going to blow it out of the water.  Now we will
> just do a bunch of hash-table splitting in the process.  That is only going
> to add to the pain.

It looks perfectly reasonable to me.  The point I think is that the caller
doesn't have to be very careful about calculating its initial request
size.
        regards, tom lane