Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tvCYI-001wAx-Rs for pgsql-general@arkaria.postgresql.org; Thu, 20 Mar 2025 09:51:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tvCXJ-001FTC-Dy for pgsql-general@arkaria.postgresql.org; Thu, 20 Mar 2025 09:50:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tuojB-00Gt4V-KN for pgsql-general@lists.postgresql.org; Wed, 19 Mar 2025 08:24:41 +0000 Received: from mail-io1-xd34.google.com ([2607:f8b0:4864:20::d34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tuoj9-003f7a-2u for pgsql-general@lists.postgresql.org; Wed, 19 Mar 2025 08:24:40 +0000 Received: by mail-io1-xd34.google.com with SMTP id ca18e2360f4ac-85ae4dc67e5so277332339f.2 for ; Wed, 19 Mar 2025 01:24:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742372679; x=1742977479; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=bw3ysdsBmmWLRpbxwiniDLnAofRd1uViL53XZ/3/uLk=; b=FyCgSEcJXGmpoaee/g2XiNy/yV5CmcN0T7dxXpT2bHquvn1YZMWfRVSCiEfGAjl1cq imVuJt4ys/P3b8qnbz6xZW+hMjW4ORTbiy5CY9+KhNMGKUcsM9+Jx4a2cebPK3klakiR eNNoEwLc3UTT8Bvr527/ezfcH8mau2zd2qR10lmqwfWq8Eyk2/Q+RzAIEfgDQdspbu4l hwXt+eS2+Mhb2mrRvx6pK4LUMYHno3cY0dCFfcRKFu6q4Xw5DuKWJ6DFrUCQJ5TlBK+s Y2c45aEjPtCsW0+JcRzmMdn/KYLUf8VnQclF+0cs+v7D1ly4dyKRY1Abfc5hIvavtmct ifXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742372679; x=1742977479; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=bw3ysdsBmmWLRpbxwiniDLnAofRd1uViL53XZ/3/uLk=; b=wYGdMN7EqLk8I66ZSUH/WhwYT/dVeWGfNuu66T6fw3MGFVbriSoOcic8S+3y16qR6N HxXk7lSFIpnk8HczAW32Gct71+9QIK4YmfgLDR53Y+ohq1MvDtzJb+iZ5bhpgrb4RkbS 6muO2lNZ9mPhT34ttph2eUr3ai7PxV7GyVC084A7l1THOPoPZOUCOT/E3R8jumgoLutg bA77LvjZkis0RmDNMJf4uVTiEvCNGySYQ6X+EukdZhb+7hjtUgZDeQ8nZnlkptr/bwT+ qTQ5nmfjPBCm92uQhXp+muc3zZiyxn9ESjnQpqv24on2dRtB+wPyBpSVNEnrRnEjUBJQ Eu0Q== X-Gm-Message-State: AOJu0YxqdXNOAJDxSzQ0u87DymaBF1oU9FNb/Yo14qBJyDJxifLkFt3x ah4/1m131dyi4X/sfyOGcflafFczqsEPFOR3d+QwbfQKE0hOGONX9cE8HjvqtZ+xnp3uhMO7uqS re/kronWIVsJikHaywDz3hgwuTuZIlFIBnM0= X-Gm-Gg: ASbGnct4ToCer+qfsjNoj5pYaqmt8Za+6eAJ1zcdUp1Gn8nxWMJetYJ03VlJn4Z2KRF 8fr4uB/MqMmOtFJQmrDoqhD3+o5W9Yj8oaWyxaQ/ssiN042S6a8u6NtyPYoAxS1bbLAAbOVBALQ E3pCIF/uSBi/u4eRpnUzuhV4Obj/Cm6q7fARpvqqBw2hiZzTfaySvvtvF5VQ== X-Google-Smtp-Source: AGHT+IGX9gt5fX6NiLbgDEpWTMFndJFocGbMWqqiwwbS0PqTjvvt2h3Y5Dm/gPACnnpSHO1yVY4eVlqHAOaNcSvlHBo= X-Received: by 2002:a05:6e02:b28:b0:3d0:bd5:b863 with SMTP id e9e14a558f8ab-3d586bd1276mr19438825ab.20.1742372679238; Wed, 19 Mar 2025 01:24:39 -0700 (PDT) MIME-Version: 1.0 From: Cosimo Simeone Date: Wed, 19 Mar 2025 08:24:03 +0000 X-Gm-Features: AQ5f1JoF8bseuxaF6jGwFTG5pwhWuiUfvdEBwk0L8CiePQsOzhuRk0C-ZgINe6Y Message-ID: Subject: Need help understanding has_function_privilege To: pgsql-general@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000009ccc460630adc088" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009ccc460630adc088 Content-Type: text/plain; charset="UTF-8" Hi! I'd need help understanding what i am doing wrong... Where am I: =# \c psql (15.8 (Homebrew), server 14.15 (Debian 14.15-1.pgdg120+1)) You are now connected to database "postgres" as user "postgres". Init: =# create role my_user; =# create schema my_schema; =# create function my_schema.my_func(p1 text) returns integer as $$select 1::integer;$$ language sql; It works... =# select my_schema.my_func('x'); my_func --------- 1 Now, the controversial part: =# SELECT has_function_privilege('my_user', 'my_schema.my_func(text)', 'execute'); has_function_privilege ------------------------ t true? Well... Ok, "whatever"... I revoke it: =# revoke execute on function my_schema.my_func(text) from my_user; REVOKE But still: =# select has_function_privilege('my_user', 'my_schema.my_func(text)', 'execute'); has_function_privilege ------------------------ t What am I doing wrong? :-) Thanks for help! --0000000000009ccc460630adc088 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi!
I'd need help understanding what i a= m doing wrong...

Where am I:
=3D# \c
psql (= 15.8 (Homebrew), server 14.15 (Debian 14.15-1.pgdg120+1))
You are now co= nnected to database "postgres" as user "postgres".

Init:
=3D# create role my_user;
=3D# create schema= my_schema;
=3D# create function my_schema.my_func(p1 te= xt) returns integer as $$select 1::integer;$$ language sql;

<= /div>
It works...
=3D# =C2=A0select my_schema.my_fun= c('x');
=C2=A0my_func
---------
=C2=A0 =C2=A0 =C2=A0 =C2= =A01

Now, the controversial part:
=3D# SELECT has_function_privilege('my_user', 'my_schema= .my_func(text)', 'execute');
=C2=A0has_function_privilege------------------------
=C2=A0t

true?
Well... Ok, "whatever"... I revoke it:
=3D# revoke ex= ecute on function my_schema.my_func(text) from my_user;
REVOKE
=

But still:
=3D# select has_function_privilege('= my_user', 'my_schema.my_func(text)', 'execute');
=C2= =A0has_function_privilege
------------------------
=C2=A0t

What am I doing wrong? :-)

<= div style=3D"font-family:arial,helvetica,sans-serif" class=3D"gmail_default= ">Thanks for help!

--0000000000009ccc460630adc088--