Yeah that is a tricky bit, especially since the query optimizer might evaluate
join expressions in an arbitrary order. A possible approach to this is to work
out how to always get a particular expression evaluated first (that may well
just be the left-most expression in the WHERE clause) then create a trivial
function that takes any number of parameters and always returns true and pass
all the Set functions as parameters in left to right dependency order. This
should work becuase I believe function parameters are evaluated left to right
before the function is called.
> On Sep 12, 2017, at 11:27 PM, Jens Alfke <j...@mooseyard.com> wrote:
>> On Sep 12, 2017, at 1:41 PM, Darko Volaric <li...@darko.org
>> <mailto:li...@darko.org>> wrote:
>> You can implement this by using user defined functions to implement row
>> "local variables" or "registers". They're single assignment storage that
>> keeps intermediate results, namely the common subexpressions.
> Thanks! That's a very interesting technique.
>> Note that you would need to order these so they are evaluated in dependency
>> order, i.e. ensure each name is set before it is got.
> What's a good way to do that? Since SQL is a non-imperative language there
> isn't much notion of order of operations. I can imagine using a
> short-circuiting AND operator, but can I be guaranteed that this will always
sqlite-users mailing list