Let's say we have this function:
CREATE OR REPLACE FUNCTION public.test(in_value character varying) RETURNS character varying LANGUAGE 'plpgsql' COST 100.0 VOLATILE LEAKPROOF SECURITY DEFINER AS $$ BEGIN RETURN in_value; END; $$; ALTER FUNCTION public.test(character varying) OWNER TO user_group_1; REVOKE ALL PRIVILEGES ON FUNCTION public.test(character varying) FROM public; GRANT EXECUTE ON FUNCTION public.test(character varying) TO user_group_2; Now let's see it with pgAdmin 3: ... GRANT EXECUTE ON FUNCTION public.test(character varying) TO user_group_1; GRANT EXECUTE ON FUNCTION public.test(character varying) TO user_group_2; REVOKE ALL ON FUNCTION public.test(character varying) FROM public; And now with pgAdmin 4: ... GRANT EXECUTE ON FUNCTION public.test(character varying) TO user_group_1; GRANT EXECUTE ON FUNCTION public.test(character varying) TO user_group_2; Like you can see the revoke of public access is not included in pgAdmin 4 in SQL tab. It would be nice to have the whole list of privileges changes there. Because for example when I copy the code and execute it on another database, then everyone has access to it! pgAdmin 4 v1.5 Desktop Runtime Windows 10 x64 1511 PostgreSQL 9.6.3