I had a function that was set to SECURITY INVOKER. I needed to give access to a view that uses this function to a role, so I made the function SECURITY DEFINER.
The function is STABLE and is usually inlined and takes 2 ms to run.
Immediately, the function quit being inlined and took 1500ms to run.
Changing the function back to SECURITY DEFINER let the function be inlined again.
On postgresql 9.3.1.
Is this expected behavior?