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 <[email protected]> wrote: > > >> On Sep 12, 2017, at 1:41 PM, Darko Volaric <[email protected] >> <mailto:[email protected]>> 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 > work? > > —Jens _______________________________________________ sqlite-users mailing list [email protected] http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

