Heikki Linnakangas <hlinn...@iki.fi> writes: > On 03/28/2015 11:24 PM, Tom Lane wrote: >> + * Macros for iterating through elements of a flat or expanded array.
> How about a struct instead? > struct ArrayIter { > Datum datumptr; > bool isnullptr; > char dataptr; > bits8 bitmapptr; > int bitmask > } > Seems more natural. Yes, and much less efficient I'm afraid. Most compilers would be unable to put the variables into registers, which is important for these inner loops. > How about turning these into functions? Likewise. The point of doing it like this was to avoid taking an efficiency hit compared to the existing code. It's conceivable that we could avoid such a hit by marking the functions all "inline", but I'm not certain that they'd get inlined, and the question of whether the variables could be in registers would remain. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers