At the cost of anonymity for those who want to frequent such establishments without so much log file trail.
And there are plenty of other use-cases for people wanting their name decoupled from their deeds.
Not all of them are exactly bad, either.
Precisely. In lazy evaluation, (and Haskell is the poster child for this) a value is only acquired when needed. So if you write SQL that lets the server off the hook for one fetch, while still adhering to the letter of the law, then (if this theory is true) that's what's happening.
Again, invoking a subquery is going to let the database engine know: "OK, get all that stuff first, and THEN work on the rest of the query."
If he simple function call is giving you a more lazy evaluation evaluation, that might explain what's occurring.
Is there a threat (even a theoretical one) of the server going into an infinite loop based upon what you're doing?
It may be that the database engine requires the subquery to break the possibility of a cycle in the code, and sequence the computation.