"Donald Fraser" <postgres@kiwi-fraser.net> writes:
> I found the solution to the problem and it would therefore appear as though this is not a bug!
> If I change the function definition to be "STABLE" instead of "VOLATILE", then the problem goes away.
Yeah, that's intentional. If the planner flattens a view that has a
function in its output list, things get a lot less predictable about
when the function will be called. For a volatile function, that can
matter a lot. We used to flatten such views anyway, but we got enough
complaints that we changed it.
http://archives.postgresql.org/pgsql-committers/2006-08/msg00358.php
regards, tom lane