On 07-01-2015 AM 08:33, Jim Nasby wrote: > On 1/6/15, 1:00 AM, Ashutosh Bapat wrote: >> >> Even checking whether the output of the function is in the right order >> or not, has its cost. I am suggesting that we can eliminate this cost >> as well. For example, PostgreSQL does not check whether a function is >> really immutable or not. > > Actually, it does: > > select test(); > ERROR: UPDATE is not allowed in a non-volatile function > CONTEXT: SQL statement "UPDATE i SET i=i+1" > PL/pgSQL function test() line 3 at SQL statement > STATEMENT: select test(); > ERROR: UPDATE is not allowed in a non-volatile function > CONTEXT: SQL statement "UPDATE i SET i=i+1" > PL/pgSQL function test() line 3 at SQL statement >
I think Ashutosh's point is that there is no dedicated executor node to perform this check. ISTM, the above error is raised during planning itself as part of the initialization of state for a function. Thanks, Amit -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers