Re: Memory allocation in spi_printtup()
От | Tom Lane |
---|---|
Тема | Re: Memory allocation in spi_printtup() |
Дата | |
Msg-id | 20936.1439823361@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Memory allocation in spi_printtup() (Neil Conway <neil.conway@gmail.com>) |
Ответы |
Re: Memory allocation in spi_printtup()
|
Список | pgsql-hackers |
Neil Conway <neil.conway@gmail.com> writes: Hi Neil! Long time no see. > spi_printtup() has the following code (spi.c:1798): > if (tuptable->free == 0) > { > tuptable->free = 256; > tuptable->alloced += tuptable->free; > tuptable->vals = (HeapTuple *) repalloc(tuptable->vals, > tuptable->alloced * sizeof(HeapTuple)); > } > i.e., it grows the size of the tuptable by a fixed amount when it runs > out of space. That seems odd; doubling the size of the table would be > more standard. Does anyone know if there is a rationale for this > behavior? Seems like it must be just legacy code. We're only allocating pointers here; the actual tuples will likely be significantly larger. So there's not a lot of reason not to use the normal doubling rule. > Attached is a one-liner to double the size of the table when space is > exhausted. I think this could use a comment, but otherwise seems OK. Should we back-patch this change? Seems like it's arguably a performance bug. regards, tom lane
В списке pgsql-hackers по дате отправления: