fix #424: limit VPD form options to VPD policies

This commit is contained in:
devmrko
2026-06-25 17:08:26 +09:00
parent 9a546b7997
commit 6957dc05b9

View File

@@ -42,6 +42,13 @@
SELECT DISTINCT policy_name SELECT DISTINCT policy_name
FROM all_policies FROM all_policies
WHERE policy_name IS NOT NULL WHERE policy_name IS NOT NULL
AND EXISTS (
SELECT 1
FROM cb_protected_object o
WHERE o.enabled_yn = 'Y'
AND o.owner = all_policies.object_owner
AND o.object_name = all_policies.object_name
)
UNION UNION
SELECT object_name || '_POLICY' SELECT object_name || '_POLICY'
FROM cb_protected_object FROM cb_protected_object
@@ -54,7 +61,16 @@
UNION UNION
SELECT owner FROM cb_protected_object WHERE enabled_yn = 'Y' SELECT owner FROM cb_protected_object WHERE enabled_yn = 'Y'
UNION UNION
SELECT pf_owner FROM all_policies WHERE pf_owner IS NOT NULL SELECT pf_owner
FROM all_policies p
WHERE pf_owner IS NOT NULL
AND EXISTS (
SELECT 1
FROM cb_protected_object o
WHERE o.enabled_yn = 'Y'
AND o.owner = p.object_owner
AND o.object_name = p.object_name
)
ORDER BY 1 ORDER BY 1
</select> </select>
@@ -64,7 +80,29 @@
UNION UNION
SELECT owner FROM cb_protected_object WHERE enabled_yn = 'Y' SELECT owner FROM cb_protected_object WHERE enabled_yn = 'Y'
UNION UNION
SELECT pf_owner FROM all_policies WHERE pf_owner IS NOT NULL SELECT pf_owner
FROM all_policies p
WHERE pf_owner IS NOT NULL
AND EXISTS (
SELECT 1
FROM cb_protected_object o
WHERE o.enabled_yn = 'Y'
AND o.owner = p.object_owner
AND o.object_name = p.object_name
)
),
policy_functions AS (
SELECT pf_owner AS owner,
package AS package_name,
function AS function_name
FROM all_policies p
WHERE EXISTS (
SELECT 1
FROM cb_protected_object o
WHERE o.enabled_yn = 'Y'
AND o.owner = p.object_owner
AND o.object_name = p.object_name
)
) )
SELECT owner, SELECT owner,
package_name, package_name,
@@ -75,6 +113,16 @@
AND position = 0 AND position = 0
AND data_type = 'VARCHAR2' AND data_type = 'VARCHAR2'
AND object_name IS NOT NULL AND object_name IS NOT NULL
AND (
REGEXP_LIKE(COALESCE(package_name, '') || '.' || object_name, '(VPD|FILTER|POLICY|PREDICATE|RLS)', 'i')
OR EXISTS (
SELECT 1
FROM policy_functions pf
WHERE pf.owner = all_arguments.owner
AND NVL(pf.package_name, '-') = NVL(all_arguments.package_name, '-')
AND pf.function_name = all_arguments.object_name
)
)
ORDER BY owner, package_name, function_name ORDER BY owner, package_name, function_name
FETCH FIRST 300 ROWS ONLY FETCH FIRST 300 ROWS ONLY
</select> </select>