Hi, Dmitry:

+   int         lastExprLenght = 0;

Did you mean to name the variable lastExprLenghth ?

w.r.t. extracting to helper method, the second and third if (currentExprIdx
== pgss_merge_threshold - 1) blocks are similar.
It is up to you whether to create the helper method.
I am fine with the current formation.

Cheers

On Tue, Jan 5, 2021 at 4:51 AM Dmitry Dolgov <9erthali...@gmail.com> wrote:

> > On Sat, Dec 26, 2020 at 08:53:28AM -0800, Zhihong Yu wrote:
> > Hi,
> > A few comments.
> >
> > +               foreach(lc, (List *) expr)
> > +               {
> > +                   Node * subExpr = (Node *) lfirst(lc);
> > +
> > +                   if (!IsA(subExpr, Const))
> > +                   {
> > +                       allConst = false;
> > +                       break;
> > +                   }
> > +               }
> >
> > It seems the above foreach loop (within foreach(temp, (List *) node)) can
> > be preceded with a check that allConst is true. Otherwise the loop can be
> > skipped.
>
> Thanks for noticing. Now that I look at it closer I think it's the other
> way around, the loop above checking constants for the first expression
> is not really necessary.
>
> > +                   if (currentExprIdx == pgss_merge_threshold - 1)
> > +                   {
> > +                       JumbleExpr(jstate, expr);
> > +
> > +                       /*
> > +                        * A const expr is already found, so JumbleExpr
> must
> > +                        * record it. Mark it as merged, it will be the
> > first
> > +                        * merged but still present in the statement
> query.
> > +                        */
> > +                       Assert(jstate->clocations_count > 0);
> > +                       jstate->clocations[jstate->clocations_count -
> > 1].merged = true;
> > +                       currentExprIdx++;
> > +                   }
> >
> > The above snippet occurs a few times. Maybe extract into a helper method.
>
> Originally I was hesitant to extract it was because it's quite small
> part of the code. But now I've realized that the part relevant to lists
> is not really correct, which makes those bits even more different, so I
> think it makes sense to leave it like that. What do you think?
>

Reply via email to