Hi PostgreSQL community,
I am recently studying about operators and views and I had doubts in two small things
1. I know if a view (security definer) is accessing a table then it is getting accessed by view owners privileges
but what about the view which contains inbuilt operators or inbuilt functions with whose privileges those will be executed. Eg.
SET ROLE postgres;
CREATE TABLE x(id INT);
CREATE VIEW v AS SELECT * FROM x WHERE id > 100;
CREATE ROLE alex;
GRANT SELECT ON v TO alex;
SET ROLE alex;
SELECT * FROM v;
Now table x will be accessed (SELECT * FROM x) with "postgres" privileges but who will execute the
underlying function inside the ( > ) operator ? Is it postgres or alex?
2. What if I used a user defined operator in the above example, then with whose privileges that operator will be executed?
Thanks
Ayush Vatsa
SDE AWS