I've never seen such a guarantee for any language, except for the so-called comma operator in C/C++ which pretends to be part of expression syntax. And I can say that the SQLite parser does not keep enough information, (at least not explicitly), to even permit such an ordering to be effected or assured as various expression and query optimizations are done. And, given how challenging optimization is for many other reasons, I doubt that any implementation's designer(s) would volunteer to add that ordering to the other optimization constraints. I also have to say that your UDFs must have been more than pure functions since they must have some side effects that affect the results. In that case, what you are doing is procedural and should not be made to masquerade as an expression or query. For that reason alone, your nicer solution must also be a clearer one.