Re: Changing function from SECURITY DEFINER to SECURITY INVOKER changes query plan? - Mailing list pgsql-general

From Joe Van Dyk
Subject Re: Changing function from SECURITY DEFINER to SECURITY INVOKER changes query plan?
Date
Msg-id CACfv+p+MOu8Q3_vD4=j70pDcOqbxSuGKLy1sQLaoON3a_u0kOQ@mail.gmail.com
Whole thread Raw
In response to Re: Changing function from SECURITY DEFINER to SECURITY INVOKER changes query plan?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
On Thu, Nov 21, 2013 at 6:11 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Joe Van Dyk <joe@tanga.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

Thanks. Is that documented somewhere? I looked, couldn't find anything.

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Changing function from SECURITY DEFINER to SECURITY INVOKER changes query plan?
Next
From: Scott Marlowe
Date:
Subject: Re: corruption issue after server crash - ERROR: unexpected chunk number 0