fix #424: limit VPD form options to VPD policies
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user