Eu tenho uma pergunta sobre o tratamento interno de colunas de array no Postgres. O mecanismo lida com isso como uma matriz clássica com alocação de memória ou é de alguma forma uma lista de ponteiros.
Seria interessante saber - tenho algumas perguntas para responder a mim mesmo sobre desempenho... :)
Arrays são definidos em
src/includes/utils/array.h
esrc/backend/utils/adt/arrayfuncs.c
e os outrosarray*
arquivos emsrc/backend/utils/adt/
.Uma matriz é a
VARLENA
(consultesrc/backend/utils/adt/varlena.c
) que é umpalloc()
tipo 'd, um wrapper de armazenamento com escopo definido em torno demalloc()
. Arrays são dados alocados em bloco, não listas encadeadas.