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 > work? > > —Jens _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users