]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Include check on polpermissive relcache for policies REL_14_STABLE github/REL_14_STABLE
authorMichael Paquier <michael@paquier.xyz>
Wed, 15 Jul 2026 01:03:46 +0000 (10:03 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 15 Jul 2026 01:03:46 +0000 (10:03 +0900)
equalPolicy() is used in the relation cache to check if two policy
definitions are equivalent, but missed to check for polpermissive.

ALTER POLICY cannot switch a policy to be PERMISSIVE or RESTRICTIVE, so
this would need a dropped and then re-created policy, which would
trigger a relcache invalidation.  Anyway, there is no harm in being
consistent in the check, and if one decides to add an ALTER POLICY to
switch PERMISSIVE or RESTRICTIVE, we would be silently in trouble.

Author: Andreas Lind <andreaslindpetersen@gmail.com>
Reviewed-by: Laurenz Albe <laurenz.albe@cybertec.at>
Discussion: https://postgr.es/m/CAMxA3rv1CS6R7JR5ojz-3CmCEnZEFrqu+XXTnGbLRWrjJRH7sA@mail.gmail.com
Backpatch-through: 14

src/backend/utils/cache/relcache.c

index 70d197292d34f5c4d82b674f3e8efd39a62215e7..d47a4ac2238baa6470c1718d0edc7e7d789f8012 100644 (file)
@@ -942,6 +942,8 @@ equalPolicy(RowSecurityPolicy *policy1, RowSecurityPolicy *policy2)
 
                if (policy1->polcmd != policy2->polcmd)
                        return false;
+               if (policy1->permissive != policy2->permissive)
+                       return false;
                if (policy1->hassublinks != policy2->hassublinks)
                        return false;
                if (strcmp(policy1->policy_name, policy2->policy_name) != 0)