On Fri, Oct 18, 2013 at 4:08 PM, David Johnston <polobo@xxxxxxxxx> wrote: > And why is volatile so special here? A stable function seems just as good a > candidate for this behavior and even an immutable one. Absolutely disagree with this. Stable operations do not have side effects and volatile operations do (or at least they can). Point being: after the query runs the database is in the same state regardless if a stable function is run or not. So, for stable operations (which covers most queries), the current behavior is good. But, it's a completely different story in the case of volatile expression and that's why I believe the optimization to skip is plainly a POLA violation. OP is not the first to bring it up by the way. > Wrapping INSERT/UPDATE/DELETE inside a non-procedural function is not that > common and in those cases where it is used it is most often a standalone API I'm not buying this either. It may not be 'common' but people are clearly exercising the behavior and 'data modifying with' is IMNSHO a much better coding paradigm than functions wrapping same. Regardless, the point at hand is whether specific plan semantics down the chain can control whether or not volatile expressions should run. Clearly, at least to me, they should not. merlin -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general