see https://github.com/apache/lucene/pull/11878 ... it doesn't do what I initially asked for (still advances all of the operands), but it delays until doubleValue() is called, which is safe and could have some impact
On Wed, Oct 26, 2022 at 9:58 AM Michael Sokolov <msoko...@gmail.com> wrote: > > Hi, yes, makes sense Mikhail, that will address most of the problem. > But I also think, given the way Expressions work (they always return > true from advanceExact) there is no reason for them to advance their > operands. This shifts the burden/concern from the developer who no > longer has to think as hard about this :) - let me post a PR that > shows > > On Wed, Oct 26, 2022 at 3:52 AM Mikhail Khludnev <m...@apache.org> wrote: > > > > Hello, Michael. > > I suppose you can bind f2 to custom lazy implementation of > > DoubleValuesSource, which defer advanceExact() by storing doc num and > > returning true always, and actually advancing on doubleValue() only. > > > > On Tue, Oct 25, 2022 at 8:13 PM Michael Sokolov <msoko...@gmail.com> wrote: > >> > >> ExpressionFunctionValueSource lazily evaluates in doubleValues: an > >> expression like > >> > >> condition ? f1 : f2 > >> > >> will only evaluate one of f1 or f2. > >> > >> At the same time, the advanceExact() call is greedy -- when you > >> advance that expression it will also advance both f1 and f2. But > >> here's the thing: it always returns true, regardless of whether f1 and > >> f2 advance. Which makes sense from the point of view of the lazy > >> evaluation -- if condition is true we don't care whether f2 advances > >> or not. > >> > >> My question is whether we could defer these child advanceExact calls > >> until ExpressionFunctionValues.doubleValue()? > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org > >> For additional commands, e-mail: dev-h...@lucene.apache.org > >> > > > > > > -- > > Sincerely yours > > Mikhail Khludnev --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org