Re: [HACKERS] JIT compiling expressions/deform + inlining prototypev2.0

Поиск
Список
Период
Сортировка
От Konstantin Knizhnik
Тема Re: [HACKERS] JIT compiling expressions/deform + inlining prototypev2.0
Дата
Msg-id 1f91771b-4d1a-a985-91aa-880d79369258@postgrespro.ru
обсуждение исходный текст
Ответ на [HACKERS] JIT compiling expressions/deform + inlining prototype v2.0  (Andres Freund <andres@anarazel.de>)
Ответы Re: [HACKERS] JIT compiling expressions/deform + inlining prototypev2.0  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers

On 01.09.2017 09:41, Andres Freund wrote:
> Hi,
>
> I previously had an early prototype of JITing [1] expression evaluation
> and tuple deforming.  I've since then worked a lot on this.
>
> Here's an initial, not really pretty but functional, submission. This
> supports all types of expressions, and tuples, and allows, albeit with
> some drawbacks, inlining of builtin functions.  Between the version at
> [1] and this I'd done some work in c++, because that allowed to
> experiment more with llvm, but I've now translated everything back.
> Some features I'd to re-implement due to limitations of C API.
>
>
> I've whacked this around quite heavily today, this likely has some new
> bugs, sorry for that :(

Can you please clarify the following fragment calculating attributes 
alignment:

        /* compute what following columns are aligned to */
+        if (att->attlen < 0)
+        {
+            /* can't guarantee any alignment after varlen field */
+            attcuralign = -1;
+        }
+        else if (att->attnotnull && attcuralign >= 0)
+        {
+            Assert(att->attlen > 0);
+            attcuralign += att->attlen;
+        }
+        else if (att->attnotnull)
+        {
+            /*
+             * After a NOT NULL fixed-width column, alignment is
+             * guaranteed to be the minimum of the forced alignment and
+             * length.  XXX
+             */
+            attcuralign = alignto + att->attlen;
+            Assert(attcuralign > 0);
+        }
+        else
+        {
+            //elog(LOG, "attnotnullreset: %d", attnum);
+            attcuralign = -1;
+        }


I wonder why in this branch (att->attnotnull && attcuralign >= 0)
we are not adding "alignto" and comment in the following branch else if 
(att->attnotnull)
seems to be not related to this branch, because in this case attcuralign 
is expected to be less then zero wjhich means that previous attribute is 
varlen field.


-- 
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: [HACKERS] Variable substitution in psql backtick expansion
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: [HACKERS] Variable substitution in psql backtick expansion