Обсуждение: need help for array appending & deleting

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

need help for array appending & deleting

От
Peter Blazso
Дата:
Hi all,

Unless it exists, I'd like to implement code for the array manipulations
above for Postgresql. and I need some help for it. I have already run
through the sources concerned but I need to be pointed to the right
direction on where to start and what kind of functions I should use. I'd
also like to have a bit more detailed info on array structure (or at
least where I can find a good doc. I've been looking for it in
'array.h', 'arrayutils.c' and 'arrayfuncs.c').

Thanks so much, in advance,
Peter Blazso


Re: [HACKERS] need help for array appending & deleting

От
Tom Lane
Дата:
Peter Blazso <blazso@deltav.hu> writes:
> Unless it exists, I'd like to implement code for the array manipulations
> above for Postgresql. and I need some help for it. I have already run
> through the sources concerned but I need to be pointed to the right
> direction on where to start and what kind of functions I should use. I'd
> also like to have a bit more detailed info on array structure (or at
> least where I can find a good doc. I've been looking for it in
> 'array.h', 'arrayutils.c' and 'arrayfuncs.c').

What's in the code is all there is :-(.  Please consider improving the
documentation once you have studied the code enough to understand what's
going on.

I recall having looked at that stuff recently, and IIRC the general
structure of an array inside the backend is
Overall length word        (required for any VARLENA type)a couple words of fixed overheaddimension info array (1 entry
perdimension)array elements, in sequence
 

I don't recall the sequence that's used (row or column major).  Also,
I think the array elements are aligned on INTALIGN boundaries, which
is pretty bogus --- arrays of doubles would fail on a lot of hardware.
The code should either use MAXALIGN always, or better use the specific
alignment needed for the array element type (as indicated by the pg_type
data).

BTW, please be sure you are working with current sources and not REL6_5
branch.  I've already fixed a bunch of parser/optimizer problems with
arrays; you shouldn't have to reinvent those changes.
        regards, tom lane