Joe Van Dyk <joe(at)tanga(dot)com> writes:
> 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?
Yes. SECURITY DEFINER functions can't be inlined --- there would be
noplace to effect the change of user ID.
regards, tom lane