review: Non-recursive processing of AND/OR lists

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема review: Non-recursive processing of AND/OR lists
Дата
Msg-id CAFj8pRDd9QTyoY0cbPoODR-hfj1xaMBuxWOxAZg0kyVtVaunkw@mail.gmail.com
обсуждение исходный текст
Ответы Re: review: Non-recursive processing of AND/OR lists  (Gurjeet Singh <gurjeet@singh.im>)
Re: review: Non-recursive processing of AND/OR lists  (Gurjeet Singh <gurjeet@singh.im>)
Список pgsql-hackers
Hello

related to

https://commitfest.postgresql.org/action/patch_view?id=1130
http://www.postgresql.org/message-id/CABwTF4V9rsjiBWE+87pK83Mmm7ACdrG7sZ08RQ-4qYMe8jvhbw@mail.gmail.com


* motivation: remove recursive procession of AND/OR list (hangs with
10062 and more subexpressions)

* patch is short, clean and respect postgresql source code requirements
* patch was applied cleanly without warnings
* all regression tests was passed
* I successfully evaluated expression with 100000 subexpressions
* there is no significant slowdown

possible improvements

a = (A_Expr*) list_nth(pending, 0);

a = (A_Expr*) linitial(pending);

not well comment

should be -- "If the right branch is also an SAME condition, append it to the"

+            /*
+             * If the right branch is also an AND condition, append it to the
+             * pending list, to be processed later. This allows us to walk even
+             * bushy trees, not just left-deep trees.
+             */
+            if (IsA(a->rexpr, A_Expr) && ((A_Expr*)a->rexpr)->kind == root_kind)
+            {
+                pending = lappend(pending, a->rexpr);
+            }
+            else
+            {
+                expr = transformExprRecurse(pstate, a->rexpr);
+                expr = coerce_to_boolean(pstate, expr, root_kind == AEXPR_AND ?
"AND" : "OR");
+                exprs = lcons(expr, exprs);
+            }

I don't see any other issues, so after fixing comments this patch is
ready for commit

Regards

Pavel Stehule



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

Предыдущее
От: Kevin Grittner
Дата:
Сообщение: Re: Git-master regression failure
Следующее
От: Svenne Krap
Дата:
Сообщение: Re: Git-master regression failure