refactor(FILE_MANAGER): Update schema reference handling for grants and table operations

This commit is contained in:
Grzegorz Michalski
2026-02-19 08:58:39 +01:00
parent a0f4146a24
commit cafa30f8f3

View File

@@ -2000,7 +2000,6 @@ AS
vOdsPrefix VARCHAR2(500); vOdsPrefix VARCHAR2(500);
vArchivePrefix VARCHAR2(500); vArchivePrefix VARCHAR2(500);
vTableExists NUMBER;
vParameters VARCHAR2(4000); vParameters VARCHAR2(4000);
vAreaUpper VARCHAR2(20); vAreaUpper VARCHAR2(20);
@@ -2012,13 +2011,13 @@ AS
SELECT grantee, privilege, grantable SELECT grantee, privilege, grantable
BULK COLLECT INTO pGrantList BULK COLLECT INTO pGrantList
FROM ALL_TAB_PRIVS FROM ALL_TAB_PRIVS
WHERE table_schema = USER WHERE table_schema = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')
AND table_name = pTableName AND table_name = pTableName
AND grantee NOT IN ('SYS', 'SYSTEM', 'PUBLIC') -- Exclude system accounts AND grantee NOT IN ('SYS', 'SYSTEM', 'PUBLIC') -- Exclude system accounts
ORDER BY grantee, privilege; ORDER BY grantee, privilege;
ENV_MANAGER.LOG_PROCESS_EVENT( ENV_MANAGER.LOG_PROCESS_EVENT(
'Saved ' || pGrantList.COUNT || ' grants for table: ' || USER || '.' || pTableName, 'Saved ' || pGrantList.COUNT || ' grants for table: ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName,
'INFO' 'INFO'
); );
EXCEPTION EXCEPTION
@@ -2055,7 +2054,7 @@ AS
FOR i IN 1..pGrantList.COUNT LOOP FOR i IN 1..pGrantList.COUNT LOOP
BEGIN BEGIN
vGrantSQL := 'GRANT ' || pGrantList(i).privilege || vGrantSQL := 'GRANT ' || pGrantList(i).privilege ||
' ON ' || USER || '.' || pTableName || ' ON ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName ||
' TO ' || pGrantList(i).grantee; ' TO ' || pGrantList(i).grantee;
IF pGrantList(i).grantable = 'YES' THEN IF pGrantList(i).grantable = 'YES' THEN
@@ -2084,7 +2083,7 @@ AS
ENV_MANAGER.LOG_PROCESS_EVENT( ENV_MANAGER.LOG_PROCESS_EVENT(
'Restored ' || vGrantCount || ' of ' || pGrantList.COUNT || 'Restored ' || vGrantCount || ' of ' || pGrantList.COUNT ||
' grants for table: ' || USER || '.' || pTableName || ' grants for table: ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName ||
CASE WHEN vFailCount > 0 THEN ' (' || vFailCount || ' failed)' ELSE '' END, CASE WHEN vFailCount > 0 THEN ' (' || vFailCount || ' failed)' ELSE '' END,
'INFO' 'INFO'
); );
@@ -2092,17 +2091,17 @@ AS
PROCEDURE DROP_IF_EXISTS(pTableName VARCHAR2) IS PROCEDURE DROP_IF_EXISTS(pTableName VARCHAR2) IS
BEGIN BEGIN
SELECT COUNT(*) INTO vTableExists ENV_MANAGER.LOG_PROCESS_EVENT('Attempting to drop table: ' || pTableName, 'DEBUG');
FROM ALL_TABLES EXECUTE IMMEDIATE 'DROP TABLE ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName;
WHERE OWNER = USER AND TABLE_NAME = pTableName; ENV_MANAGER.LOG_PROCESS_EVENT('Table dropped successfully: ' || pTableName, 'INFO');
IF vTableExists > 0 THEN
ENV_MANAGER.LOG_PROCESS_EVENT('Dropping existing table: ' || pTableName, 'INFO');
EXECUTE IMMEDIATE 'DROP TABLE ' || USER || '.' || pTableName;
END IF;
EXCEPTION EXCEPTION
WHEN OTHERS THEN WHEN OTHERS THEN
IF SQLCODE = -942 THEN -- ORA-00942: table or view does not exist
ENV_MANAGER.LOG_PROCESS_EVENT('Table does not exist, skipping drop: ' || pTableName, 'INFO');
ELSE
ENV_MANAGER.LOG_PROCESS_EVENT('Error dropping table ' || pTableName || ': ' || SQLERRM, 'WARNING'); ENV_MANAGER.LOG_PROCESS_EVENT('Error dropping table ' || pTableName || ': ' || SQLERRM, 'WARNING');
RAISE; -- Re-raise if not "table not exists" error
END IF;
END DROP_IF_EXISTS; END DROP_IF_EXISTS;
BEGIN BEGIN