This post is also available in:
English
I am quarterly writing a post dissecting the changes implemented by Oracle CPUs so we can understand better the modifications implemented by Oracle in our Databases.
To check previous changes, follow the links below:
- Dissecting 191016 BP, PSU, RU and RUR
- Dissecting 190716 BP, PSU, RU and RUR
- Dissecting 190416 BP, PSU, RU and RUR
- Dissecting 190115 BP, PSU, RU and RUR
- Dissecting 181016 BP, PSU, RU and RUR
- Dissecting 180717 BP, PSU, RU and RUR
- Dissecting 180417 BP, PSU, RU and RUR
- Dissecting 180116 BP, PSU, RU and RUR
- Dissecting 171017 BP, PSU, RU and RUR
So what oracle internal objects were changed in January 2020 – 200114?
VERSION PATCH OWNER TYPE TOTAL ---------- ---------- ------------------------------ --------------- ---------- 11.2.0.4 BP SYS PACKAGE 1 12.1.0.2 BP SYS PACKAGE 2 12.1.0.2 BP SYS PACKAGE BODY 8 12.1.0.2 PSU SYS PACKAGE 1 12.1.0.2 PSU SYS PACKAGE BODY 4 12.2.0.1 JUL2019RUR SYS PACKAGE 4 12.2.0.1 JUL2019RUR SYS PACKAGE BODY 9 12.2.0.1 JUL2019RUR SYS VIEW 1 12.2.0.1 OCT2019RUR SYS PACKAGE 4 12.2.0.1 OCT2019RUR SYS PACKAGE BODY 9 12.2.0.1 OCT2019RUR SYS VIEW 1 12.2.0.1 RU SYS PACKAGE 5 12.2.0.1 RU SYS PACKAGE BODY 10 18.0.0.0 18.7RUR SYS PACKAGE 6 18.0.0.0 18.7RUR SYS PACKAGE BODY 1 18.0.0.0 18.8RUR SYS PACKAGE 6 18.0.0.0 18.8RUR SYS PACKAGE BODY 1 18.0.0.0 RU SYS PACKAGE 6 18.0.0.0 RU SYS PACKAGE BODY 4 19.0.0.0 19.4RUR SYS PACKAGE 6 19.0.0.0 19.4RUR SYS PACKAGE BODY 2 19.0.0.0 19.5RUR SYS PACKAGE 6 19.0.0.0 19.5RUR SYS PACKAGE BODY 2 19.0.0.0 RU MDSYS PACKAGE 2 19.0.0.0 RU MDSYS PACKAGE BODY 2 19.0.0.0 RU SYS FUNCTION 1 19.0.0.0 RU SYS PACKAGE 13 19.0.0.0 RU SYS PACKAGE BODY 26 19.0.0.0 RU XDB PACKAGE BODY 2
And created?
VERSION PATCH OWNER TYPE TOTAL ---------- ---------- ------------------------------ --------------- ---------- 12.2.0.1 RU SYS PACKAGE 1 12.2.0.1 RU SYS PACKAGE BODY 1 19.0.0.0 RU SYS PACKAGE 1 19.0.0.0 RU SYS PACKAGE BODY 1 19.0.0.0 RU SYS TYPE 2 19.0.0.0 RU SYS TYPE BODY 1
P.S: Nothing was added for 11.2 / 12.1 / 18 in Oracle objects.
So which are exactly the objects modified by 191016?
VERSION PATCH OWNER TYPE NAME ACTION
---------- --------------- ------------------------------ --------------- ------------------------------ ------
11.2.0.4 BP SYS PACKAGE DBMS_SWRF_REPORT_INTERNAL MOD
12.1.0.2 BP SYS PACKAGE DBMS_PLUGTS MOD
12.1.0.2 BP SYS PACKAGE BODY DBMS_PLUGTS MOD
12.1.0.2 BP SYS PACKAGE BODY DBMS_SPACE_ADMIN MOD
12.1.0.2 BP SYS PACKAGE BODY DBMS_SQLPATCH MOD
12.1.0.2 BP SYS PACKAGE BODY DBMS_STATS MOD
12.1.0.2 PSU & BP SYS PACKAGE DBMS_SWRF_REPORT_INTERNAL MOD
12.1.0.2 PSU & BP SYS PACKAGE BODY DBMS_AWR_REPORT_LAYOUT MOD
12.1.0.2 PSU & BP SYS PACKAGE BODY DBMS_SWRF_REPORT_INTERNAL MOD
12.1.0.2 PSU & BP SYS PACKAGE BODY DBMS_XSTREAM_ADM_INTERNAL MOD
12.1.0.2 PSU & BP SYS PACKAGE BODY DBMS_XSTREAM_AUTH_IVK MOD
12.2.0.1 RU SYS PACKAGE DBMS_AWR_PROTECTED NEW
12.2.0.1 RU SYS PACKAGE BODY DBMS_AWR_PROTECTED NEW
12.2.0.1 OCT2019RUR & SYS PACKAGE DBMS_RCVMAN MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS PACKAGE DBMS_REDEFINITION_INTERNAL MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS PACKAGE BODY DBMS_HEAT_MAP_INTERNAL MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS PACKAGE BODY DBMS_RCVMAN MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS PACKAGE BODY DBMS_REDEFINITION MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS PACKAGE BODY DBMS_REDEFINITION_INTERNAL MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS PACKAGE BODY DBMS_STATS_ADVISOR MOD
JUL2019RUR
12.2.0.1 OCT2019RUR & SYS VIEW DBA_APPLY_ERROR MOD
JUL2019RUR
12.2.0.1 RU SYS PACKAGE DBMS_PDB MOD
12.2.0.1 RU SYS PACKAGE DBMS_SWRF_REPORT_INTERNAL MOD
12.2.0.1 RU SYS PACKAGE DBMS_UMF_PROTECTED MOD
12.2.0.1 RU SYS PACKAGE BODY DBMS_AWR_REPORT_LAYOUT MOD
12.2.0.1 RU SYS PACKAGE BODY DBMS_PDB MOD
12.2.0.1 RU SYS PACKAGE BODY DBMS_QOPATCH MOD
12.2.0.1 RU SYS PACKAGE BODY DBMS_SPACE_ADMIN MOD
12.2.0.1 RU SYS PACKAGE BODY DBMS_SWRF_REPORT_INTERNAL MOD
12.2.0.1 RU SYS PACKAGE BODY KUPW$WORKER MOD
12.2.0.1 RU & OCT2019RUR SYS PACKAGE DBMS_MVIEW_STATS_INTERNAL MOD
& JUL2019RUR
12.2.0.1 RU & OCT2019RUR SYS PACKAGE DBMS_SYNC_REFRESH_INTERNAL MOD
& JUL2019RUR
12.2.0.1 RU & OCT2019RUR SYS PACKAGE BODY DBMS_SNAP_INTERNAL MOD
& JUL2019RUR
12.2.0.1 RU & OCT2019RUR SYS PACKAGE BODY DBMS_STATS MOD
& JUL2019RUR
12.2.0.1 RU & OCT2019RUR SYS PACKAGE BODY DBMS_SYNC_REFRESH_INTERNAL MOD
& JUL2019RUR
12.2.0.1 RU & OCT2019RUR SYS PACKAGE BODY PRVT_ILM MOD
& JUL2019RUR
18.0.0.0 RU SYS PACKAGE BODY DBMS_STATS MOD
18.0.0.0 RU SYS PACKAGE BODY KUPW$WORKER MOD
18.0.0.0 RU SYS PACKAGE BODY PRVT_ILM MOD
18.0.0.0 RU & 18.8RUR & SYS PACKAGE DBMS_AWR_PROTECTED MOD
18.7RUR
18.0.0.0 RU & 18.8RUR & SYS PACKAGE DBMS_BACKUP_RESTORE MOD
18.7RUR
18.0.0.0 RU & 18.8RUR & SYS PACKAGE DBMS_MVIEW_STATS_INTERNAL MOD
18.7RUR
18.0.0.0 RU & 18.8RUR & SYS PACKAGE DBMS_REGISTRY MOD
18.7RUR
18.0.0.0 RU & 18.8RUR & SYS PACKAGE DBMS_SYNC_REFRESH_INTERNAL MOD
18.7RUR
18.0.0.0 RU & 18.8RUR & SYS PACKAGE DBMS_UMF_PROTECTED MOD
18.7RUR
18.0.0.0 RU & 18.8RUR & SYS PACKAGE BODY DBMS_RCVMAN MOD
18.7RUR
19.0.0.0 RU SYS PACKAGE DBMS_AQ_SUB NEW
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQ_SUB NEW
19.0.0.0 RU SYS TYPE AQ$_BND NEW
19.0.0.0 RU SYS TYPE AQ$_BND_ARRAY NEW
19.0.0.0 RU SYS TYPE BODY AQ$_BND NEW
19.0.0.0 RU MDSYS PACKAGE SDO_RDF MOD
19.0.0.0 RU MDSYS PACKAGE SDO_RDF_JAVA_STP MOD
19.0.0.0 RU MDSYS PACKAGE BODY SDO_RDF MOD
19.0.0.0 RU MDSYS PACKAGE BODY SDO_TPIDX MOD
19.0.0.0 RU SYS FUNCTION AQ$_GET_SUBSCRIBERS MOD
19.0.0.0 RU SYS PACKAGE DBMS_AQ_INV MOD
19.0.0.0 RU SYS PACKAGE DBMS_ASH MOD
19.0.0.0 RU SYS PACKAGE DBMS_AUTO_INDEX MOD
19.0.0.0 RU SYS PACKAGE DBMS_AUTO_INDEX_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE DBMS_JSON0 MOD
19.0.0.0 RU SYS PACKAGE DBMS_RCVMAN MOD
19.0.0.0 RU SYS PACKAGE DBMS_SPM_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQADM_INV MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQADM_SYS MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQADM_VAR MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQ_INV MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQ_SYS_EXP_ACTIONS MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQ_SYS_EXP_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AQ_SYS_IMP_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_ASH MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_ASH_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AUTO_INDEX MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_AUTO_INDEX_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_JSON0 MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_PRVTAQIM MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_PRVTAQIS MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_SMB_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_SPM_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_SQLTUNE MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_STATS MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_STATS_ADVISOR MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_SWRF_REPORT_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_TRANSFORM_EXIMP MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_TRANSFORM_EXIMP_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY DBMS_TRANSFORM_INTERNAL MOD
19.0.0.0 RU SYS PACKAGE BODY KUPW$WORKER MOD
19.0.0.0 RU XDB PACKAGE BODY DBMS_JSON MOD
19.0.0.0 RU XDB PACKAGE BODY DBMS_SODA_ADMIN MOD
19.0.0.0 RU & 19.5RUR & SYS PACKAGE DBMS_AWR_PROTECTED MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE DBMS_BACKUP_RESTORE MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE DBMS_MVIEW_STATS_INTERNAL MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE DBMS_REGISTRY MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE DBMS_SYNC_REFRESH_INTERNAL MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE DBMS_UMF_PROTECTED MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE BODY DBMS_RCVMAN MOD
19.4RUR
19.0.0.0 RU & 19.5RUR & SYS PACKAGE BODY DBMS_SPM MOD
19.4RUR
What changed for each? (click to see the changes)
- 11.2.0.4
- 12.1.0.2
- SYS.DBMS_PLUGTS – PACKAGE 12cR1 (BP)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE 12cR1 (BP)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE 12cR1 (PSU)
- SYS.DBMS_AWR_REPORT_LAYOUT – PACKAGE BODY 12cR1 (PSU)
- SYS.DBMS_AWR_REPORT_LAYOUT – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_PLUGTS – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SPACE_ADMIN – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SQLPATCH – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_STATS – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE BODY 12cR1 (PSU)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_XSTREAM_ADM_INTERNAL – PACKAGE BODY 12cR1 (PSU)
- SYS.DBMS_XSTREAM_ADM_INTERNAL – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_XSTREAM_AUTH_IVK – PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_XSTREAM_AUTH_IVK – PACKAGE BODY 12cR1 (PSU)
- 12.2.0.1
- SYS.DBMS_AWR_PROTECTED – PACKAGE 12cR2 (RU)
- SYS.DBMS_MVIEW_STATS_INTERNAL – PACKAGE 12cR2 (RU & OCT2019RUR & JUL2019RUR)
- SYS.DBMS_PDB – PACKAGE 12cR2 (RU)
- SYS.DBMS_RCVMAN – PACKAGE 12cR2 (JUL2019RUR)
- SYS.DBMS_RCVMAN – PACKAGE 12cR2 (OCT2019RUR)
- SYS.DBMS_REDEFINITION_INTERNAL – PACKAGE 12cR2 (OCT2019RUR)
- SYS.DBMS_REDEFINITION_INTERNAL – PACKAGE 12cR2 (JUL2019RUR)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE 12cR2 (RU)
- SYS.DBMS_SYNC_REFRESH_INTERNAL – PACKAGE 12cR2 (RU & OCT2019RUR & JUL2019RUR)
- SYS.DBMS_UMF_PROTECTED – PACKAGE 12cR2 (RU)
- SYS.DBMS_AWR_PROTECTED – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_AWR_REPORT_LAYOUT – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_HEAT_MAP_INTERNAL – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.DBMS_HEAT_MAP_INTERNAL – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.DBMS_PDB – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_QOPATCH – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_RCVMAN – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.DBMS_RCVMAN – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.DBMS_REDEFINITION – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.DBMS_REDEFINITION – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.DBMS_REDEFINITION_INTERNAL – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.DBMS_REDEFINITION_INTERNAL – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.DBMS_SNAP_INTERNAL – PACKAGE BODY 12cR2 (RU & OCT2019RUR & JUL2019RUR)
- SYS.DBMS_SPACE_ADMIN – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_STATS – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.DBMS_STATS – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_STATS – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.DBMS_STATS_ADVISOR – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.DBMS_STATS_ADVISOR – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_SYNC_REFRESH_INTERNAL – PACKAGE BODY 12cR2 (RU & OCT2019RUR & JUL2019RUR)
- SYS.KUPW$WORKER – PACKAGE BODY 12cR2 (RU)
- SYS.PRVT_ILM – PACKAGE BODY 12cR2 (OCT2019RUR)
- SYS.PRVT_ILM – PACKAGE BODY 12cR2 (JUL2019RUR)
- SYS.PRVT_ILM – PACKAGE BODY 12cR2 (RU)
- SYS.DBA_APPLY_ERROR – VIEW 12cR2 (OCT2019RUR)
- SYS.DBA_APPLY_ERROR – VIEW 12cR2 (JUL2019RUR)
- 18.0.0.0
- SYS.DBMS_AWR_PROTECTED – PACKAGE 18c (18.8RUR & 18.7RUR)
- SYS.DBMS_AWR_PROTECTED – PACKAGE 18c (RU)
- SYS.DBMS_BACKUP_RESTORE – PACKAGE 18c (RU)
- SYS.DBMS_BACKUP_RESTORE – PACKAGE 18c (18.8RUR)
- SYS.DBMS_BACKUP_RESTORE – PACKAGE 18c (18.7RUR)
- SYS.DBMS_MVIEW_STATS_INTERNAL – PACKAGE 18c (RU & 18.8RUR & 18.7RUR)
- SYS.DBMS_REGISTRY – PACKAGE 18c (RU)
- SYS.DBMS_REGISTRY – PACKAGE 18c (18.7RUR)
- SYS.DBMS_REGISTRY – PACKAGE 18c (18.8RUR)
- SYS.DBMS_SYNC_REFRESH_INTERNAL – PACKAGE 18c (RU & 18.8RUR & 18.7RUR)
- SYS.DBMS_UMF_PROTECTED – PACKAGE 18c (18.8RUR & 18.7RUR)
- SYS.DBMS_UMF_PROTECTED – PACKAGE 18c (RU)
- SYS.DBMS_RCVMAN – PACKAGE BODY 18c (18.8RUR)
- SYS.DBMS_RCVMAN – PACKAGE BODY 18c (18.7RUR)
- SYS.DBMS_RCVMAN – PACKAGE BODY 18c (RU)
- SYS.DBMS_STATS – PACKAGE BODY 18c (RU)
- SYS.KUPW$WORKER – PACKAGE BODY 18c (RU)
- SYS.PRVT_ILM – PACKAGE BODY 18c (RU)
- 19.0.0.0
- MDSYS.SDO_RDF – PACKAGE 19c (RU)
- MDSYS.SDO_RDF_JAVA_STP – PACKAGE 19c (RU)
- MDSYS.SDO_RDF – PACKAGE BODY 19c (RU)
- MDSYS.SDO_TPIDX – PACKAGE BODY 19c (RU)
- SYS.AQ$_GET_SUBSCRIBERS – FUNCTION 19c (RU)
- SYS.DBMS_AQ_INV – PACKAGE 19c (RU)
- SYS.DBMS_AQ_SUB – PACKAGE 19c (RU)
- SYS.DBMS_ASH – PACKAGE 19c (RU)
- SYS.DBMS_AUTO_INDEX – PACKAGE 19c (RU)
- SYS.DBMS_AUTO_INDEX_INTERNAL – PACKAGE 19c (RU)
- SYS.DBMS_AWR_PROTECTED – PACKAGE 19c (RU & 19.5RUR & 19.4RUR)
- SYS.DBMS_BACKUP_RESTORE – PACKAGE 19c (19.4RUR)
- SYS.DBMS_BACKUP_RESTORE – PACKAGE 19c (RU)
- SYS.DBMS_BACKUP_RESTORE – PACKAGE 19c (19.5RUR)
- SYS.DBMS_JSON0 – PACKAGE 19c (RU)
- SYS.DBMS_MVIEW_STATS_INTERNAL – PACKAGE 19c (RU & 19.5RUR & 19.4RUR)
- SYS.DBMS_RCVMAN – PACKAGE 19c (RU)
- SYS.DBMS_REGISTRY – PACKAGE 19c (19.5RUR)
- SYS.DBMS_REGISTRY – PACKAGE 19c (19.4RUR)
- SYS.DBMS_REGISTRY – PACKAGE 19c (RU)
- SYS.DBMS_SPM_INTERNAL – PACKAGE 19c (RU)
- SYS.DBMS_SYNC_REFRESH_INTERNAL – PACKAGE 19c (RU & 19.5RUR & 19.4RUR)
- SYS.DBMS_UMF_PROTECTED – PACKAGE 19c (RU & 19.5RUR & 19.4RUR)
- SYS.DBMS_AQADM_INV – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQADM_SYS – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQADM_VAR – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQ_INV – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQ_SUB – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQ_SYS_EXP_ACTIONS – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQ_SYS_EXP_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_AQ_SYS_IMP_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_ASH – PACKAGE BODY 19c (RU)
- SYS.DBMS_ASH_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_AUTO_INDEX – PACKAGE BODY 19c (RU)
- SYS.DBMS_AUTO_INDEX_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_JSON0 – PACKAGE BODY 19c (RU)
- SYS.DBMS_PRVTAQIM – PACKAGE BODY 19c (RU)
- SYS.DBMS_PRVTAQIS – PACKAGE BODY 19c (RU)
- SYS.DBMS_RCVMAN – PACKAGE BODY 19c (19.4RUR)
- SYS.DBMS_RCVMAN – PACKAGE BODY 19c (RU)
- SYS.DBMS_RCVMAN – PACKAGE BODY 19c (19.5RUR)
- SYS.DBMS_SMB_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_SPM – PACKAGE BODY 19c (19.5RUR & 19.4RUR)
- SYS.DBMS_SPM – PACKAGE BODY 19c (RU)
- SYS.DBMS_SPM_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_SQLTUNE – PACKAGE BODY 19c (RU)
- SYS.DBMS_STATS – PACKAGE BODY 19c (RU)
- SYS.DBMS_STATS_ADVISOR – PACKAGE BODY 19c (RU)
- SYS.DBMS_SWRF_REPORT_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_TRANSFORM_EXIMP – PACKAGE BODY 19c (RU)
- SYS.DBMS_TRANSFORM_EXIMP_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.DBMS_TRANSFORM_INTERNAL – PACKAGE BODY 19c (RU)
- SYS.KUPW$WORKER – PACKAGE BODY 19c (RU)
- SYS.AQ$_BND – TYPE 19c (RU)
- SYS.AQ$_BND_ARRAY – TYPE 19c (RU)
- SYS.AQ$_BND – TYPE BODY 19c (RU)
- XDB.DBMS_JSON – PACKAGE BODY 19c (RU)
- XDB.DBMS_SODA_ADMIN – PACKAGE BODY 19c (RU)
Changed Objects
P.S:
> = Added Lines
< = Removed Lines
11.2.0.4
3d2 <
12.1.0.2
398,418c398,418 < PROCEDURE reclaimTempSegment ( < file_no IN binary_integer, < block_no IN binary_integer, < type_no IN binary_integer, < ts_no IN binary_integer, < blocks IN binary_integer, < extents IN binary_integer, < iniexts IN binary_integer, < minexts IN binary_integer, < maxexts IN binary_integer, < extsize IN binary_integer, < extpct IN binary_integer, < user_no IN binary_integer, < lists IN binary_integer, < groups IN binary_integer, < bitmapranges IN number, < cachehint IN binary_integer, < scanhint IN binary_integer, < hwmincr IN binary_integer, < spare1 IN number, < spare2 IN binary_integer); --- > PROCEDURE reclaimTempSegment( > file_no IN BINARY_INTEGER, > block_no IN BINARY_INTEGER, > type_no IN BINARY_INTEGER, > ts_no IN BINARY_INTEGER, > blocks IN BINARY_INTEGER, > extents IN BINARY_INTEGER, > iniexts IN BINARY_INTEGER, > minexts IN BINARY_INTEGER, > maxexts IN BINARY_INTEGER, > extsize IN BINARY_INTEGER, > extpct IN BINARY_INTEGER, > user_no IN BINARY_INTEGER, > lists IN BINARY_INTEGER, > groups IN BINARY_INTEGER, > bitmapranges IN NUMBER, > cachehint IN BINARY_INTEGER, > scanhint IN BINARY_INTEGER, > hwmincr IN NUMBER, > spare1 IN NUMBER, > spare2 IN BINARY_INTEGER); 688c688 < hwmincr IN binary_integer, --- > hwmincr IN number,
3,6d2 < < < COMMON_SECTIONS_INITIALIZED BOOLEAN; <
5,7d4 < COMMON_SECTIONS_INITIALIZED BOOLEAN; < <
17995c17995 < IF DBMS_SWRF_REPORT_INTERNAL.COMMON_SECTIONS_INITIALIZED THEN --- > IF DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED THEN 17999c17999 < DBMS_SWRF_REPORT_INTERNAL.COMMON_SECTIONS_INITIALIZED := TRUE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := TRUE;
17994c17994 < IF DBMS_SWRF_REPORT_INTERNAL.COMMON_SECTIONS_INITIALIZED THEN --- > IF DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED THEN 17998c17998 < DBMS_SWRF_REPORT_INTERNAL.COMMON_SECTIONS_INITIALIZED := TRUE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := TRUE;
39c39 < HWMINCR BINARY_INTEGER, --- > HWMINCR NUMBER, 84,85d83 < < 109d106 < 2469c2466 < HWMINCR IN BINARY_INTEGER, --- > HWMINCR IN NUMBER, 2965,2984c2962,2980 < FILE_NO IN BINARY_INTEGER, < BLOCK_NO IN BINARY_INTEGER, < TYPE_NO IN BINARY_INTEGER, < TS_NO IN BINARY_INTEGER, < BLOCKS IN BINARY_INTEGER, < EXTENTS IN BINARY_INTEGER, < INIEXTS IN BINARY_INTEGER, < MINEXTS IN BINARY_INTEGER, < MAXEXTS IN BINARY_INTEGER, < EXTPCT IN BINARY_INTEGER, < USER_NO IN BINARY_INTEGER, < LISTS IN BINARY_INTEGER, < GROUPS IN BINARY_INTEGER, < BITMAPRANGES IN BINARY_INTEGER, < CACHEHINT IN BINARY_INTEGER, < SCANHINT IN BINARY_INTEGER, < HWMINCR IN BINARY_INTEGER, < SPARE1 IN NUMBER, < SPARE2 IN BINARY_INTEGER) IS < --- > FILE_NO IN BINARY_INTEGER, > BLOCK_NO IN BINARY_INTEGER, > TYPE_NO IN BINARY_INTEGER, > TS_NO IN BINARY_INTEGER, > BLOCKS IN BINARY_INTEGER, > EXTENTS IN BINARY_INTEGER, > INIEXTS IN BINARY_INTEGER, > MINEXTS IN BINARY_INTEGER, > MAXEXTS IN BINARY_INTEGER, > EXTPCT IN BINARY_INTEGER, > USER_NO IN BINARY_INTEGER, > LISTS IN BINARY_INTEGER, > GROUPS IN BINARY_INTEGER, > BITMAPRANGES IN BINARY_INTEGER, > CACHEHINT IN BINARY_INTEGER, > SCANHINT IN BINARY_INTEGER, > HWMINCR IN NUMBER, > SPARE1 IN NUMBER, > SPARE2 IN BINARY_INTEGER) IS
576a577,580 > ELSIF (SEGMENT_TYPE = 'TABLE PARTITION') THEN > V_PART_NAME := SUBSTR(PARTITION_NAME, 1, 30); > V_TABLE_NAME := SUBSTR(SEGMENT_NAME, 1, 30); > 590c594 < IF (V_SEG_TYPE != 'TABLE') THEN --- > IF (V_SEG_TYPE != 'TABLE' AND V_SEG_TYPE != 'TABLE PARTITION') THEN 602c606 < --- > 615c619 < ELSE --- > ELSIF (V_SEG_TYPE = 'TABLE PARTITION') THEN 617,619c621,627 < SEGMENT_REPAIR_SFILE(V_OWNER, V_LOBSEG_NAME, V_SEG_TYPE, < V_LOBPART_NAME, REPAIR_OPTION, V_TABLE_NAME, < V_COLUMN_NAME, V_PART_NAME, V_LOBTYPE); --- > ASSM_SEGMENT_REPAIR(V_OWNER, V_TABLE_NAME, V_SEG_TYPE, V_PART_NAME, 29, > NULL, NULL); > ELSE > > SEGMENT_REPAIR_SFILE(V_OWNER, V_LOBSEG_NAME, V_SEG_TYPE, > V_LOBPART_NAME, REPAIR_OPTION, V_TABLE_NAME, > V_COLUMN_NAME, V_PART_NAME, V_LOBTYPE);
65a66,102
>
> ORIG_CONTAINER_NAME VARCHAR2(128) := NULL;
>
>
>
> PROCEDURE DEBUG_PUT_LINE(L IN VARCHAR2) IS
> BEGIN
> IF DEBUG THEN
> DBMS_OUTPUT.PUT_LINE(L);
> END IF;
> END DEBUG_PUT_LINE;
>
>
>
>
>
> FUNCTION CHECK_CONTAINER_SWITCH(E_MSG OUT VARCHAR2) RETURN BOOLEAN IS
> L_CONTAINER_NAME VARCHAR2(128);
> CONTAINER_SWITCHED BOOLEAN;
> BEGIN
> SELECT SYS_CONTEXT('userenv', 'con_name')
> INTO L_CONTAINER_NAME
> FROM DUAL;
>
> DEBUG_PUT_LINE('l_container_name '||L_CONTAINER_NAME||' orig_container_name '||ORIG_CONTAINER_NAME);
>
> IF ORIG_CONTAINER_NAME IS NULL OR
> L_CONTAINER_NAME != ORIG_CONTAINER_NAME THEN
> E_MSG := 'Unexpected container change to ' || L_CONTAINER_NAME;
> CONTAINER_SWITCHED := TRUE;
> ELSE
> E_MSG := NULL;
> CONTAINER_SWITCHED := FALSE;
> END IF;
>
> RETURN CONTAINER_SWITCHED;
> END;
139c176,177
< S_PATCH_DIRECTORY_ZIP = PATCH_DIRECTORY_ZIP
---
> S_PATCH_DIRECTORY_ZIP = PATCH_DIRECTORY_ZIP,
> S_CONTAINER_NAME = ORIG_CONTAINER_NAME
151a190
> L_MSG VARCHAR2(300);
183c222,223
< S_PATCH_DIRECTORY_ZIP
---
> S_PATCH_DIRECTORY_ZIP,
> S_CONTAINER_NAME
214c254,255
< PATCH_DIRECTORY_ZIP
---
> PATCH_DIRECTORY_ZIP,
> ORIG_CONTAINER_NAME
217a259,263
>
> IF CHECK_CONTAINER_SWITCH(L_MSG) THEN
> RAISE_APPLICATION_ERROR(-20003, L_MSG);
> END IF;
>
265,272d310
< PROCEDURE DEBUG_PUT_LINE(L IN VARCHAR2) IS
< BEGIN
< IF DEBUG THEN
< DBMS_OUTPUT.PUT_LINE(L);
< END IF;
< END DEBUG_PUT_LINE;
<
<
655a694,695
> CONTAINER_SWITCHED BOOLEAN := FALSE;
> L_MSG VARCHAR2(300);
660,663d699
< UPDATE DBA_REGISTRY_SQLPATCH
< SET STATUS = 'END'
< WHERE ROWID = CURRENT_REGISTRY_ROWID;
<
665,667c701,702
< DELETE DBMS_SQLPATCH_STATE
< WHERE S_CURRENT_PATCH_ID = CURRENT_PATCH.PATCH_ID
< AND S_CURRENT_PATCH_UID = CURRENT_PATCH.PATCH_UID;
---
>
> CONTAINER_SWITCHED := CHECK_CONTAINER_SWITCH(L_MSG);
669c704,713
< COMMIT;
---
> IF NOT CONTAINER_SWITCHED THEN
>
> UPDATE DBA_REGISTRY_SQLPATCH
> SET STATUS = 'END'
> WHERE ROWID = CURRENT_REGISTRY_ROWID;
>
>
> DELETE DBMS_SQLPATCH_STATE
> WHERE S_CURRENT_PATCH_ID = CURRENT_PATCH.PATCH_ID
> AND S_CURRENT_PATCH_UID = CURRENT_PATCH.PATCH_UID;
670a715,716
> COMMIT;
> END IF;
694a741,746
>
>
> IF CONTAINER_SWITCHED THEN
> RAISE_APPLICATION_ERROR(-20003, L_MSG);
> END IF;
>
707a760
> L_MSG VARCHAR2(300);
713a767,771
>
> IF CHECK_CONTAINER_SWITCH(L_MSG) THEN
> RAISE_APPLICATION_ERROR(-20003, L_MSG);
> END IF;
>
716,717c774,779
< DEBUG_PUT_LINE(' initialize not complete, never install');
< RETURN NOTHING_SQL;
---
>
>
>
>
>
> RAISE_APPLICATION_ERROR(-20004, 'Uninitialized state in install_file');
997a1060,1065
>
>
> SELECT SYS_CONTEXT('userenv', 'con_name')
> INTO ORIG_CONTAINER_NAME
> FROM DUAL;
>
32003c32003,32007 < IF(NOTES_SIZE > 3950) THEN --- > > > > IF((NOTES_SIZE + LENGTH(XSTATS_XML)) > 3950) THEN > 33102a33107 > TRANS_GTT BOOLEAN; 33183c33188,33197 < FLUSH_ONE_MON_INFO(TOBJN); --- > > IF (NOT DBMS_STATS_INTERNAL.IS_TEMP_TAB(NULL, NULL, TOBJN, TRANS_GTT)) > THEN > > > > > > FLUSH_ONE_MON_INFO(TOBJN); > END IF; 33814a33829 > TRANS_GTT BOOLEAN; 33815a33831 > 34458c34474,34482 < (PREPARESTATJOBS OR SEQSTATJOBS)) THEN --- > (PREPARESTATJOBS OR SEQSTATJOBS) AND > NOT DBMS_STATS_INTERNAL.IS_TEMP_TAB(NULL, NULL, TOBJN, TRANS_GTT)) > THEN > > > > > >
19463c19463 < COMMON_SECTIONS_INITIALIZED := FALSE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := FALSE; 19480c19480 < COMMON_SECTIONS_INITIALIZED := FALSE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := FALSE;
19546c19546 < COMMON_SECTIONS_INITIALIZED := FALSE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := FALSE; 19563c19563 < COMMON_SECTIONS_INITIALIZED := FALSE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := FALSE;
96c96,101 < WHEN OTHERS THEN RAISE; --- > WHEN OTHERS THEN > IF SQLCODE IN ( -1952 ) THEN > NULL; > ELSE > RAISE; > END IF;
96c96,101 < WHEN OTHERS THEN RAISE; --- > WHEN OTHERS THEN > IF SQLCODE IN ( -1952 ) THEN > NULL; > ELSE > RAISE; > END IF;
645c645 < TOTAL_SIZE := 21; --- > TOTAL_SIZE := 22; 647c647 < TOTAL_SIZE := 23; --- > TOTAL_SIZE := 24; 653c653 < TOTAL_SIZE := 19; --- > TOTAL_SIZE := 20; 655c655 < TOTAL_SIZE := 21; --- > TOTAL_SIZE := 22; 880a881,893 > > IF ((PRIVILEGE_TYPE = 'APPLY') OR (PRIVILEGE_TYPE = '*')) THEN > IF IS_GRANT THEN > SCRIPT(OLDSIZE + INCREMENT) := CONSTRUCT_SQL_T( > 'grant execute on sys.dbms_lob to '|| > SAFE_GRANTEE); > ELSE > SCRIPT(OLDSIZE + INCREMENT) := CONSTRUCT_SQL_T( > 'revoke execute on sys.dbms_lob from '|| > SAFE_GRANTEE); > END IF; > INCREMENT := INCREMENT + 1; > END IF;
645c645 < TOTAL_SIZE := 21; --- > TOTAL_SIZE := 22; 647c647 < TOTAL_SIZE := 23; --- > TOTAL_SIZE := 24; 653c653 < TOTAL_SIZE := 19; --- > TOTAL_SIZE := 20; 655c655 < TOTAL_SIZE := 21; --- > TOTAL_SIZE := 22; 880a881,893 > > IF ((PRIVILEGE_TYPE = 'APPLY') OR (PRIVILEGE_TYPE = '*')) THEN > IF IS_GRANT THEN > SCRIPT(OLDSIZE + INCREMENT) := CONSTRUCT_SQL_T( > 'grant execute on sys.dbms_lob to '|| > SAFE_GRANTEE); > ELSE > SCRIPT(OLDSIZE + INCREMENT) := CONSTRUCT_SQL_T( > 'revoke execute on sys.dbms_lob from '|| > SAFE_GRANTEE); > END IF; > INCREMENT := INCREMENT + 1; > END IF;
12.2.0.1
0a1,12 > PACKAGE dbms_awr_protected > ACCESSIBLE BY (PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT, > PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL) > AS > > > > > > COMMON_SECTIONS_INITIALIZED BOOLEAN; > > END DBMS_AWR_PROTECTED;
2c2 < ACCESSIBLE BY (DBMS_MVIEW_STATS) IS --- > ACCESSIBLE BY (PACKAGE DBMS_MVIEW_STATS) IS
394c394,395 < object_subname IN varchar2 DEFAULT NULL); --- > object_subname IN varchar2 DEFAULT NULL, > sig_mismatch IN boolean DEFAULT FALSE);
1259c1259,1261 < -- by the find functions. --- > -- by the find functions. This tag is also used by report/delete obsolete > -- functions to restrict what backups to consider and what backups to filter > -- for backup optimization. 1263c1265 < -- tag of the datafile copies to be translated --- > -- tag of the datafile copies/backup sets to be translated 1264a1267,1268 > -- use_like > -- input tag parameter to be used similar to LIKE semantics in SQL 1266c1270 < PROCEDURE setTag(tag IN varchar2 DEFAULT NULL); --- > PROCEDURE setTag(tag IN varchar2 DEFAULT NULL, use_like IN number DEFAULT 0);
1259,1261c1259 < -- by the find functions. This tag is also used by report/delete obsolete < -- functions to restrict what backups to consider and what backups to filter < -- for backup optimization. --- > -- by the find functions. 1265c1263 < -- tag of the datafile copies/backup sets to be translated --- > -- tag of the datafile copies to be translated 1267,1268d1264 < -- use_like < -- input tag parameter to be used similar to LIKE semantics in SQL 1270c1266 < PROCEDURE setTag(tag IN varchar2 DEFAULT NULL, use_like IN number DEFAULT 0); --- > PROCEDURE setTag(tag IN varchar2 DEFAULT NULL);
533a534,565 > FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, > IDXNAME IN VARCHAR2) RETURN BOOLEAN; > > > > > FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN; > > > > > > FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN; > > > > > > > > > > FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, > I_NAME IN VARCHAR2, > T_OWNER IN VARCHAR2, > T_NAME IN VARCHAR2) RETURN BOOLEAN; > > > > > >
534,565d533 < FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, < IDXNAME IN VARCHAR2) RETURN BOOLEAN; < < < < < FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN; < < < < < < FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN; < < < < < < < < < < FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, < I_NAME IN VARCHAR2, < T_OWNER IN VARCHAR2, < T_NAME IN VARCHAR2) RETURN BOOLEAN; < < < < < <
3,6d2 < < < COMMON_SECTIONS_INITIALIZED BOOLEAN; <
2c2 < ACCESSIBLE BY (DBMS_SYNC_REFRESH) IS --- > ACCESSIBLE BY (PACKAGE DBMS_SYNC_REFRESH) IS
2,5c2,6 < ACCESSIBLE BY (DBMS_WORKLOAD_REPOSITORY < ,DBMS_SWRF_REPORT_INTERNAL < ,DBMS_AWR_REPORT_LAYOUT < ,DBMS_ASH_INTERNAL) AS --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_WORKLOAD_REPOSITORY > ,PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL > ,PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT > ,PACKAGE SYS.DBMS_ASH_INTERNAL) AS >
0a1,4 > PACKAGE BODY dbms_awr_protected AS > > COMMON_SECTIONS_INITIALIZED BOOLEAN := FALSE; > END DBMS_AWR_PROTECTED;
18788c18788 < IF DBMS_SWRF_REPORT_INTERNAL.COMMON_SECTIONS_INITIALIZED THEN --- > IF DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED THEN 18792c18792 < DBMS_SWRF_REPORT_INTERNAL.COMMON_SECTIONS_INITIALIZED := TRUE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := TRUE;
710a711,713 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 715,716c718,734 < TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; < EXECUTE IMMEDIATE TRN; --- > > > > FOR I IN 1..3 LOOP > BEGIN > TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; 817a836,838 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 819c840,855 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; > 840c876,890 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP;
711,713d710 < EXCEP_DEADLOCK EXCEPTION; < I NUMBER; < PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 718,734c715,716 < < < < FOR I IN 1..3 LOOP < BEGIN < TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; < EXECUTE IMMEDIATE TRN; < EXIT; < EXCEPTION < WHEN EXCEP_DEADLOCK THEN < IF (I = 3) THEN < RAISE; < END IF; < WHEN OTHERS THEN < RAISE; < END; < END LOOP; --- > TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; > EXECUTE IMMEDIATE TRN; 836,838d817 < EXCEP_DEADLOCK EXCEPTION; < I NUMBER; < PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 840,855c819 < < < FOR I IN 1..3 LOOP < BEGIN < EXECUTE IMMEDIATE TRN; < EXIT; < EXCEPTION < WHEN EXCEP_DEADLOCK THEN < IF (I = 3) THEN < RAISE; < END IF; < WHEN OTHERS THEN < RAISE; < END; < END LOOP; < --- > EXECUTE IMMEDIATE TRN; 876,890c840 < < < FOR I IN 1..3 LOOP < BEGIN < EXECUTE IMMEDIATE TRN; < EXIT; < EXCEPTION < WHEN EXCEP_DEADLOCK THEN < IF (I = 3) THEN < RAISE; < END IF; < WHEN OTHERS THEN < RAISE; < END; < END LOOP; --- > EXECUTE IMMEDIATE TRN;
391c391,392 < OBJECT_SUBNAME IN VARCHAR2); --- > OBJECT_SUBNAME IN VARCHAR2, > SIG_MISMATCH IN BOOLEAN); 397c398,399 < OBJECT_SUBNAME IN VARCHAR2 DEFAULT NULL) IS --- > OBJECT_SUBNAME IN VARCHAR2 DEFAULT NULL, > SIG_MISMATCH IN BOOLEAN DEFAULT FALSE) IS 399c401,402 < KPDBCONVERTTOLOCAL(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, OBJECT_SUBNAME); --- > KPDBCONVERTTOLOCAL(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, OBJECT_SUBNAME, > SIG_MISMATCH);
83c83 < RETURN '$Header: rdbms/src/client/tools/qpinv/prvtqopi.sql /st_rdbms_12.2.0.1.0dbbp/6 2018/08/10 12:48:23 aime Exp $'; --- > RETURN '$Header: rdbms/src/client/tools/qpinv/prvtqopi.sql /st_rdbms_12.2.0.1.0dbbp/7 2019/11/05 08:00:09 jdorozco Exp $'; 686c686,691 < CONFIG_OINV_JOBS(); --- > > > > > >
166a167 > TAG_LIKE NUMBER := 0; 620a622,624 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 643c647 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME, 902a907,909 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1011a1019 > AND RESTORETAG IS NULL 1083a1092,1094 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1154a1166,1168 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1288a1303,1305 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1396a1414,1416 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1714a1735,1737 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1837a1861,1863 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1934a1961,1963 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2062a2092,2094 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2118a2151,2153 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2255a2291,2293 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2780a2819,2821 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2869a2911,2913 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2965a3010,3012 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3048a3096,3098 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3175a3226 > AND RESTORETAG IS NULL 3396a3448,3450 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3614a3669,3671 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3726a3784,3786 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3773a3834,3836 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3795a3859,3861 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3821a3888,3890 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3856a3926,3928 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3916a3989,3991 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3964a4040,4042 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4014a4093,4095 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4053a4135,4137 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7182a7267,7269 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7197a7285,7287 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7331a7422,7424 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7378a7472,7474 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7418a7515,7517 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7502a7602,7604 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7582a7685,7687 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7650a7756,7758 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7725a7834,7836 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7756a7868,7870 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7827a7942,7944 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7904a8022,8024 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7964a8085,8087 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8017a8141,8143 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8103a8230,8232 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8177a8307,8309 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8239a8372,8374 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8292a8428,8430 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8384a8523,8525 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8401a8543,8545 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8424c8568,8571 < WHERE (STATUS = 'A' OR STATUS = 'X')) DC --- > WHERE (STATUS = 'A' OR STATUS = 'X') > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG)))) DC 8454a8602,8604 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XDF.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XDF.TAG = RESTORETAG))) 8480a8631,8633 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8523a8677,8679 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 8592a8749,8751 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8622a8782,8784 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8691a8854,8856 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8807a8973,8975 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8850a9019,9021 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9100a9272,9274 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9344a9519,9521 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9470a9648,9650 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9693c9873,9874 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 9809a9991 > 9907c10089,10090 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 11044c11227 < IF (TAG IS NOT NULL AND NOT TAGMATCHREQUIRED) THEN --- > IF (TAG IS NOT NULL AND TAGMATCHREQUIRED) THEN 11049c11232,11233 < IF (TAG = LOCAL.TAG) THEN --- > IF ((TAG_LIKE = 1 AND LOCAL.TAG LIKE TAG) OR > (TAG_LIKE <> 1 AND LOCAL.TAG = TAG)) THEN 11065c11249,11250 < DEB(DEB_IN, 'tag does not match, continuing search'); --- > DEB(DEB_IN, 'tag does not match, continuing search:' || > LOCAL.TAG); 11769,11770c11954,11958 < (ACTION.TAG_CON <> RESTORETAG OR ACTION.TAG_CON IS NULL)) THEN < DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:'); --- > (((TAG_LIKE = 1 AND ACTION.TAG_CON NOT LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND ACTION.TAG_CON <> RESTORETAG)) OR > ACTION.TAG_CON IS NULL)) THEN > DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:' || > NVL(ACTION.TAG_CON, '<NUL>')); 12750c12938,12941 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 13718a13910,13913 > > > > 13958c14153,14154 < IF (RMANCMD != OBSOLETECMD_T) THEN --- > IF (RMANCMD != OBSOLETECMD_T OR > (RESTORETAG IS NOT NULL AND RMANCMD = OBSOLETECMD_T)) THEN 14106d14301 < 14108,14109c14303 < ACTION.TYPE_CON = BACKUPSET_CON_T AND < RMANCMD != OBSOLETECMD_T ) THEN --- > ACTION.TYPE_CON = BACKUPSET_CON_T) THEN 14118c14312,14313 < IF (VALIDATIONREC.TAG = RESTORETAG OR --- > IF (((TAG_LIKE = 1 AND VALIDATIONREC.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND VALIDATIONREC.TAG = RESTORETAG)) OR 14178,14183d14372 < < IF (RMANCMD = OBSOLETECMD_T AND NOT ISVALIDACTION(ACTION)) THEN < DEB(DEB_EXIT, 'with action_SKIP'); < RETURN ACTION_SKIP; < END IF; < 17580c17769,17772 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 17876a18069,18071 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18158a18354,18356 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18250a18449 > AND RESTORETAG IS NULL 18323a18523,18525 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18394a18597,18599 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18963c19168,19169 < AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND RESTORETAG IS NULL; 19005c19211,19214 < XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))); 19052a19262 > AND RESTORETAG IS NULL 19103a19314,19316 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 19169a19383 > AND RESTORETAG IS NULL 19204a19419,19421 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19233a19451,19453 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19291c19511 < --- > AND RESTORETAG IS NULL 19322a19543,19545 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19347a19571,19573 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19422a19649 > AND RESTORETAG IS NULL 19461a19689,19691 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19493a19724,19726 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19953c20186,20187 < TAG IN VARCHAR2 DEFAULT NULL) --- > TAG IN VARCHAR2 DEFAULT NULL, > USE_LIKE IN NUMBER DEFAULT 0) 19955a20190,20195 > > > IF (NVL(TAG, ' ') <> NVL(RESTORETAG, ' ') AND RCVRECCURSOR1_C%ISOPEN) THEN > DEB(DEB_PRINT, 'closing cursor rcRecCursor_c'); > CLOSE RCVRECCURSOR1_C; > END IF; 19956a20197,20198 > TAG_LIKE := USE_LIKE; > DEB(DEB_PRINT, 'restoreTag='|| RESTORETAG || ',tag_like='|| TAG_LIKE); 25558a25801,25803 > > VALIDATIONREC VALIDBACKUPSETREC_T; > BS_RCVREC RCVREC_T; 26216a26462,26463 > <<NEXTROW>> > 26443a26691,26726 > END IF; > > > IF (LBREC.BACKUP_TYPE = BACKUPSET_TXT AND RESTORETAG IS NOT NULL) THEN > BS_RCVREC.BSKEY_CON := LBREC.BS_KEY; > BS_RCVREC.SETCOUNT_CON := LBREC.BS_COUNT; > BS_RCVREC.SETSTAMP_CON := LBREC.BS_STAMP; > BS_RCVREC.PIECECOUNT_CON := LBREC.BS_PIECES; > IF (LBREC.FILE_TYPE = ARCHIVEDLOG_TXT) THEN > BS_RCVREC.LOGLOWSCN_OBJ := LBREC.RL_FIRST_CHANGE#; > BS_RCVREC.LOGTHREAD_OBJ := LBREC.RL_THREAD#; > BS_RCVREC.LOGSEQUENCE_OBJ := LBREC.RL_SEQUENCE#; > ELSIF (LBREC.FILE_TYPE IN (SPFILE_TXT, CONTROLFILE_TXT)) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.FILE_TYPE = DATAFILE_TXT) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := LBREC.DF_CHECKPOINT_CHANGE#; > IF (LBREC.DF_INCREMENTAL_CHANGE# = LBREC.DF_CREATION_CHANGE# OR > LBREC.BS_INCR_TYPE = FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.BS_INCR_TYPE <> FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := LBREC.DF_INCREMENTAL_CHANGE#; > END IF; > END IF; > > IF VALIDATEBACKUPSET(BACKUPSETREC=> BS_RCVREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATIONREC) <> SUCCESS THEN > DEB(DEB_IN, 'tag does not match: bs_key=' || LBREC.BS_KEY); > GOTO NEXTROW; > END IF; > 28357c28640 < DEB(DEB_IN, 'tag does not match'); --- > DEB(DEB_IN, 'tag does not match for controlfile proxy copy'); 28682c28965 < DEB(DEB_EXIT, 'tag does not match'); --- > DEB(DEB_EXIT, 'tag does not match for proxy copy:'||BRLREC.TAG_CON); 28921,28933c29204,29210 < IF (RMANCMD = OBSOLETECMD_T) THEN < < < VALRC := SUCCESS; < ELSE < VALRC := VALIDATEBACKUPSET( < BACKUPSETREC => BSFREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATEREC); < END IF; --- > VALRC := VALIDATEBACKUPSET( > BACKUPSETREC => BSFREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATEREC); 28950,28959d29226 < ELSIF (RMANCMD = OBSOLETECMD_T) THEN < DEB(DEB_IN, ' Added bsfRec:'); < < RCVRECPUSH(BSFREC); < GETBS_STATUS := SUCCESS; < IF (LCOPIES > 1) THEN < LCOPIES := LCOPIES - 1; < ELSE < EXIT; < END IF; 29225a29493 > DEB(DEB_PRINT, 'getRA_likePattern='|| PATTERN);
167d166 < TAG_LIKE NUMBER := 0; 622,624d620 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 647c643 < BDF.COMPLETION_TIME COMPLETION_TIME, --- > NULL COMPLETION_TIME, 907,909d902 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1019d1011 < AND RESTORETAG IS NULL 1092,1094d1083 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1166,1168d1154 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1303,1305d1288 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1414,1416d1396 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1735,1737d1714 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1861,1863d1837 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1961,1963d1934 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2092,2094d2062 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2151,2153d2118 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2291,2293d2255 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2819,2821d2780 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2911,2913d2869 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3010,3012d2965 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3096,3098d3048 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3226d3175 < AND RESTORETAG IS NULL 3448,3450d3396 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3669,3671d3614 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3784,3786d3726 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3834,3836d3773 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3859,3861d3795 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3888,3890d3821 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3926,3928d3856 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3989,3991d3916 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4040,4042d3964 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4093,4095d4014 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4135,4137d4053 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7267,7269d7182 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7285,7287d7197 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7422,7424d7331 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7472,7474d7378 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7515,7517d7418 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7602,7604d7502 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7685,7687d7582 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7756,7758d7650 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7834,7836d7725 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7868,7870d7756 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7942,7944d7827 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8022,8024d7904 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8085,8087d7964 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8141,8143d8017 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8230,8232d8103 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8307,8309d8177 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8372,8374d8239 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8428,8430d8292 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8523,8525d8384 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8543,8545d8401 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8568,8571c8424 < WHERE (STATUS = 'A' OR STATUS = 'X') < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG)))) DC --- > WHERE (STATUS = 'A' OR STATUS = 'X')) DC 8602,8604d8454 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND XDF.TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND XDF.TAG = RESTORETAG))) 8631,8633d8480 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8677,8679d8523 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 8749,8751d8592 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8782,8784d8622 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8854,8856d8691 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8973,8975d8807 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9019,9021d8850 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9272,9274d9100 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9519,9521d9344 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9648,9650d9470 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9873,9874c9693 < ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR --- > C1REC.TAG_CON = RESTORETAG OR 9991d9809 < 10089,10090c9907 < ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR --- > C1REC.TAG_CON = RESTORETAG OR 11227c11044 < IF (TAG IS NOT NULL AND TAGMATCHREQUIRED) THEN --- > IF (TAG IS NOT NULL AND NOT TAGMATCHREQUIRED) THEN 11232,11233c11049 < IF ((TAG_LIKE = 1 AND LOCAL.TAG LIKE TAG) OR < (TAG_LIKE <> 1 AND LOCAL.TAG = TAG)) THEN --- > IF (TAG = LOCAL.TAG) THEN 11249,11250c11065 < DEB(DEB_IN, 'tag does not match, continuing search:' || < LOCAL.TAG); --- > DEB(DEB_IN, 'tag does not match, continuing search'); 11954,11958c11769,11770 < (((TAG_LIKE = 1 AND ACTION.TAG_CON NOT LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND ACTION.TAG_CON <> RESTORETAG)) OR < ACTION.TAG_CON IS NULL)) THEN < DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:' || < NVL(ACTION.TAG_CON, '<NUL>')); --- > (ACTION.TAG_CON <> RESTORETAG OR ACTION.TAG_CON IS NULL)) THEN > DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:'); 12938,12941c12750 < IF ((TAG_LIKE = 1 AND < NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR < (TAG_LIKE <> 1 AND < NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN --- > IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN 13910,13913d13718 < < < < 14153,14154c13958 < IF (RMANCMD != OBSOLETECMD_T OR < (RESTORETAG IS NOT NULL AND RMANCMD = OBSOLETECMD_T)) THEN --- > IF (RMANCMD != OBSOLETECMD_T) THEN 14301a14106 > 14303c14108,14109 < ACTION.TYPE_CON = BACKUPSET_CON_T) THEN --- > ACTION.TYPE_CON = BACKUPSET_CON_T AND > RMANCMD != OBSOLETECMD_T ) THEN 14312,14313c14118 < IF (((TAG_LIKE = 1 AND VALIDATIONREC.TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND VALIDATIONREC.TAG = RESTORETAG)) OR --- > IF (VALIDATIONREC.TAG = RESTORETAG OR 14372a14178,14183 > > IF (RMANCMD = OBSOLETECMD_T AND NOT ISVALIDACTION(ACTION)) THEN > DEB(DEB_EXIT, 'with action_SKIP'); > RETURN ACTION_SKIP; > END IF; > 17769,17772c17580 < IF ((TAG_LIKE = 1 AND < NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR < (TAG_LIKE <> 1 AND < NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN --- > IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN 18069,18071d17876 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18354,18356d18158 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18449d18250 < AND RESTORETAG IS NULL 18523,18525d18323 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18597,18599d18394 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19168,19169c18963 < AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) < AND RESTORETAG IS NULL; --- > AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); 19211,19214c19005 < XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))); --- > XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); 19262d19052 < AND RESTORETAG IS NULL 19314,19316d19103 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 19383d19169 < AND RESTORETAG IS NULL 19419,19421d19204 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19451,19453d19233 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19511c19291 < AND RESTORETAG IS NULL --- > 19543,19545d19322 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19571,19573d19347 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19649d19422 < AND RESTORETAG IS NULL 19689,19691d19461 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19724,19726d19493 < AND (RESTORETAG IS NULL OR < ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR < (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 20186,20187c19953 < TAG IN VARCHAR2 DEFAULT NULL, < USE_LIKE IN NUMBER DEFAULT 0) --- > TAG IN VARCHAR2 DEFAULT NULL) 20190,20195d19955 < < < IF (NVL(TAG, ' ') <> NVL(RESTORETAG, ' ') AND RCVRECCURSOR1_C%ISOPEN) THEN < DEB(DEB_PRINT, 'closing cursor rcRecCursor_c'); < CLOSE RCVRECCURSOR1_C; < END IF; 20197,20198d19956 < TAG_LIKE := USE_LIKE; < DEB(DEB_PRINT, 'restoreTag='|| RESTORETAG || ',tag_like='|| TAG_LIKE); 25801,25803d25558 < < VALIDATIONREC VALIDBACKUPSETREC_T; < BS_RCVREC RCVREC_T; 26462,26463d26216 < <<NEXTROW>> < 26691,26726d26443 < END IF; < < < IF (LBREC.BACKUP_TYPE = BACKUPSET_TXT AND RESTORETAG IS NOT NULL) THEN < BS_RCVREC.BSKEY_CON := LBREC.BS_KEY; < BS_RCVREC.SETCOUNT_CON := LBREC.BS_COUNT; < BS_RCVREC.SETSTAMP_CON := LBREC.BS_STAMP; < BS_RCVREC.PIECECOUNT_CON := LBREC.BS_PIECES; < IF (LBREC.FILE_TYPE = ARCHIVEDLOG_TXT) THEN < BS_RCVREC.LOGLOWSCN_OBJ := LBREC.RL_FIRST_CHANGE#; < BS_RCVREC.LOGTHREAD_OBJ := LBREC.RL_THREAD#; < BS_RCVREC.LOGSEQUENCE_OBJ := LBREC.RL_SEQUENCE#; < ELSIF (LBREC.FILE_TYPE IN (SPFILE_TXT, CONTROLFILE_TXT)) THEN < BS_RCVREC.DFNUMBER_OBJ := 0; < BS_RCVREC.FROMSCN_ACT := 0; < ELSIF (LBREC.FILE_TYPE = DATAFILE_TXT) THEN < BS_RCVREC.DFNUMBER_OBJ := 0; < BS_RCVREC.FROMSCN_ACT := LBREC.DF_CHECKPOINT_CHANGE#; < IF (LBREC.DF_INCREMENTAL_CHANGE# = LBREC.DF_CREATION_CHANGE# OR < LBREC.BS_INCR_TYPE = FULL_TXT) THEN < BS_RCVREC.FROMSCN_ACT := 0; < ELSIF (LBREC.BS_INCR_TYPE <> FULL_TXT) THEN < BS_RCVREC.FROMSCN_ACT := LBREC.DF_INCREMENTAL_CHANGE#; < END IF; < END IF; < < IF VALIDATEBACKUPSET(BACKUPSETREC=> BS_RCVREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATIONREC) <> SUCCESS THEN < DEB(DEB_IN, 'tag does not match: bs_key=' || LBREC.BS_KEY); < GOTO NEXTROW; < END IF; < 28640c28357 < DEB(DEB_IN, 'tag does not match for controlfile proxy copy'); --- > DEB(DEB_IN, 'tag does not match'); 28965c28682 < DEB(DEB_EXIT, 'tag does not match for proxy copy:'||BRLREC.TAG_CON); --- > DEB(DEB_EXIT, 'tag does not match'); 29204,29210c28921,28933 < VALRC := VALIDATEBACKUPSET( < BACKUPSETREC => BSFREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATEREC); --- > IF (RMANCMD = OBSOLETECMD_T) THEN > > > VALRC := SUCCESS; > ELSE > VALRC := VALIDATEBACKUPSET( > BACKUPSETREC => BSFREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATEREC); > END IF; 29226a28950,28959 > ELSIF (RMANCMD = OBSOLETECMD_T) THEN > DEB(DEB_IN, ' Added bsfRec:'); > > RCVRECPUSH(BSFREC); > GETBS_STATUS := SUCCESS; > IF (LCOPIES > 1) THEN > LCOPIES := LCOPIES - 1; > ELSE > EXIT; > END IF; 29493d29225 < DEB(DEB_PRINT, 'getRA_likePattern='|| PATTERN);
84a85,86
>
> CONS_TS_CHANGED CONSTANT PLS_INTEGER := 32;
1167,1168c1169,1172
< USING_INDEX BOOLEAN :=FALSE;
<
---
> USING_INDEX BOOLEAN := FALSE;
> IDX_ATT_LOCAL BOOLEAN := FALSE;
> IDX_TMP_CNT PLS_INTEGER;
> IDX_INT_PARTITION BOOLEAN := FALSE;
1364,1366c1368,1400
< IF (FOUND_INTERVAL OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX(
< O_OBJ_OWNER, O_OBJ_NAME)) THEN
< DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS','ALL');
---
> IF (FOUND_INTERVAL
> OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX(O_OBJ_OWNER,
> O_OBJ_NAME))
> THEN
> IDX_INT_PARTITION := DBMS_REDEFINITION_INTERNAL.IDX_LOC_INT_PART(
> O_OBJ_OWNER,O_OBJ_NAME);
> IF (NOT IDX_INT_PARTITION)
> OR DBMS_REDEFINITION_INTERNAL.IDX_INCLUDE_PARTITIONS
> OR DBMS_REDEFINITION_INTERNAL.IDX_PART_ATR_CHG(O_OBJ_OWNER,
> O_OBJ_NAME,
> O_BT_OWNER,
> O_BT_NAME)
> OR (BITAND(CTX_FLAG, DBMS_REDEFINITION.CONS_REDEF_TABLE)
> <> DBMS_REDEFINITION.CONS_REDEF_TABLE)
> THEN
>
>
>
>
>
>
>
> DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS',
> 'ALL');
> ELSE
>
>
>
> DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'PARTITIONING',FALSE);
> IDX_ATT_LOCAL := TRUE;
>
> IDX_INT_PARTITION := FALSE;
> END IF;
1423c1457,1482
<
---
> IF IDX_ATT_LOCAL THEN
>
>
>
>
>
>
>
>
> SELECT COUNT(REGEXP_SUBSTR(
> DBMS_LOB.SUBSTR(MD_DDL_INFO.DDLTEXT,1000),
> '(^|\s)TABLESPACE($|\s)'))
> INTO IDX_TMP_CNT FROM SYS.DUAL;
> IF IDX_TMP_CNT > 0 OR NEW_TABLESPACE IS NULL THEN
>
>
> DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' LOCAL'));
> ELSE
> IF NEW_TABLESPACE IS NOT NULL THEN
>
> DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' TABLESPACE '||
> DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE,FALSE) ||
> ' LOCAL'));
> END IF;
> END IF;
> END IF;
1646a1706,1722
>
>
>
>
> IF IDX_INT_PARTITION AND NEW_TABLESPACE IS NOT NULL
> THEN
> ALTER_IDX_DDL := 'ALTER INDEX ' ||
> DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_OWNER, FALSE) || '.' ||
> DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_NAME, FALSE) ||
> ' MODIFY DEFAULT ATTRIBUTES TABLESPACE ' ||
> DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE, FALSE);
> IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN
> DBMS_SYSTEM.KSDWRT(1, 'transform_ddl: alter index ddl= ' ||
> ALTER_IDX_DDL);
> END IF;
> EXECUTE IMMEDIATE ALTER_IDX_DDL;
> END IF;
4346a4423
> CTX_FLAG := CTX_FLAG + DBMS_REDEFINITION.CONS_TS_CHANGED;
85,86d84
<
< CONS_TS_CHANGED CONSTANT PLS_INTEGER := 32;
1169,1172c1167,1168
< USING_INDEX BOOLEAN := FALSE;
< IDX_ATT_LOCAL BOOLEAN := FALSE;
< IDX_TMP_CNT PLS_INTEGER;
< IDX_INT_PARTITION BOOLEAN := FALSE;
---
> USING_INDEX BOOLEAN :=FALSE;
>
1368,1400c1364,1366
< IF (FOUND_INTERVAL
< OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX(O_OBJ_OWNER,
< O_OBJ_NAME))
< THEN
< IDX_INT_PARTITION := DBMS_REDEFINITION_INTERNAL.IDX_LOC_INT_PART(
< O_OBJ_OWNER,O_OBJ_NAME);
< IF (NOT IDX_INT_PARTITION)
< OR DBMS_REDEFINITION_INTERNAL.IDX_INCLUDE_PARTITIONS
< OR DBMS_REDEFINITION_INTERNAL.IDX_PART_ATR_CHG(O_OBJ_OWNER,
< O_OBJ_NAME,
< O_BT_OWNER,
< O_BT_NAME)
< OR (BITAND(CTX_FLAG, DBMS_REDEFINITION.CONS_REDEF_TABLE)
< <> DBMS_REDEFINITION.CONS_REDEF_TABLE)
< THEN
<
<
<
<
<
<
<
< DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS',
< 'ALL');
< ELSE
<
<
<
< DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'PARTITIONING',FALSE);
< IDX_ATT_LOCAL := TRUE;
<
< IDX_INT_PARTITION := FALSE;
< END IF;
---
> IF (FOUND_INTERVAL OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX(
> O_OBJ_OWNER, O_OBJ_NAME)) THEN
> DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS','ALL');
1457,1482c1423
< IF IDX_ATT_LOCAL THEN
<
<
<
<
<
<
<
<
< SELECT COUNT(REGEXP_SUBSTR(
< DBMS_LOB.SUBSTR(MD_DDL_INFO.DDLTEXT,1000),
< '(^|\s)TABLESPACE($|\s)'))
< INTO IDX_TMP_CNT FROM SYS.DUAL;
< IF IDX_TMP_CNT > 0 OR NEW_TABLESPACE IS NULL THEN
<
<
< DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' LOCAL'));
< ELSE
< IF NEW_TABLESPACE IS NOT NULL THEN
<
< DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' TABLESPACE '||
< DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE,FALSE) ||
< ' LOCAL'));
< END IF;
< END IF;
< END IF;
---
>
1706,1722d1646
<
<
<
<
< IF IDX_INT_PARTITION AND NEW_TABLESPACE IS NOT NULL
< THEN
< ALTER_IDX_DDL := 'ALTER INDEX ' ||
< DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_OWNER, FALSE) || '.' ||
< DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_NAME, FALSE) ||
< ' MODIFY DEFAULT ATTRIBUTES TABLESPACE ' ||
< DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE, FALSE);
< IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN
< DBMS_SYSTEM.KSDWRT(1, 'transform_ddl: alter index ddl= ' ||
< ALTER_IDX_DDL);
< END IF;
< EXECUTE IMMEDIATE ALTER_IDX_DDL;
< END IF;
4423d4346
< CTX_FLAG := CTX_FLAG + DBMS_REDEFINITION.CONS_TS_CHANGED;
1003,1338d1002 < < < < < < FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, < IDXNAME IN VARCHAR2) RETURN BOOLEAN < IS < IND_CONS NUMBER; < BEGIN < SELECT COUNT(1) INTO IND_CONS < FROM DBA_PART_INDEXES IND < WHERE IND.INDEX_NAME = IDXNAME < AND IND.OWNER = IDXOWNER < AND IND.LOCALITY = 'LOCAL' < AND IND.INTERVAL IS NOT NULL; < IF IND_CONS > 0 THEN < RETURN TRUE; < END IF; < RETURN FALSE; < EXCEPTION WHEN OTHERS THEN < RETURN FALSE; < END IDX_LOC_INT_PART; < < < < < FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN IS < EVENT_VALUE BINARY_INTEGER := 0; < BEGIN < DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); < IF BITAND(EVENT_VALUE, 32) = 32 THEN < RETURN TRUE; < ELSE < RETURN FALSE; < END IF; < END IDX_INCLUDE_PARTITIONS; < < < < < < FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN IS < EVENT_VALUE BINARY_INTEGER := 0; < BEGIN < DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); < IF BITAND(EVENT_VALUE, 64) = 64 THEN < RETURN TRUE; < ELSE < RETURN FALSE; < END IF; < END IDX_SKIP_ATR_CHK; < < < < < < < < < < < FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, < I_NAME IN VARCHAR2, < T_OWNER IN VARCHAR2, < T_NAME IN VARCHAR2) RETURN BOOLEAN < IS < P_NAME_INT VARCHAR2(128) := NULL; < P_NAME_DEF VARCHAR2(128) := NULL; < CHANGED BOOLEAN := FALSE; < ITEM NUMBER; < CURSOR PATS IS < SELECT MIN(PARTITION_NAME) NAME ,MIN(INTERVAL) INTERVAL < FROM DBA_IND_PARTITIONS < WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME < GROUP BY INTERVAL,COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, < PCT_FREE,INI_TRANS,MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT, < MIN_EXTENT,MAX_EXTENT,MAX_SIZE,PCT_INCREASE,FREELISTS, < FREELIST_GROUPS,LOGGING,COMPRESSION,BUFFER_POOL,FLASH_CACHE, < CELL_FLASH_CACHE,PARAMETERS,DOMIDX_OPSTATUS; < BEGIN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart : index ' || I_OWNER || '.' || I_NAME || < ' on ' || T_OWNER || '.' || T_NAME); < END IF; < < < < IF (IDX_SKIP_ATR_CHK) THEN < RETURN FALSE; < END IF; < < < < < SELECT COUNT(*) INTO ITEM < FROM DBA_TAB_PARTITIONS U, DBA_IND_PARTITIONS I < WHERE U.TABLE_OWNER=T_OWNER AND U.TABLE_NAME = T_NAME < AND I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME = I_NAME < AND U.PARTITION_POSITION=I.PARTITION_POSITION < AND U.PARTITION_NAME != I.PARTITION_NAME; < IF ITEM >0 THEN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 1: partition names are changed'); < END IF; < CHANGED := TRUE; < RETURN CHANGED; < END IF; < < < < < < < < FOR PAT IN PATS LOOP < IF (PATS%ROWCOUNT > 2 ) THEN < < CHANGED := TRUE; < EXIT; < END IF; < IF PAT.INTERVAL = 'NO' THEN < IF P_NAME_DEF IS NULL THEN < P_NAME_DEF := PAT.NAME; < ELSE < < CHANGED := TRUE; < EXIT; < END IF; < ELSE < IF P_NAME_INT IS NULL THEN < P_NAME_INT := PAT.NAME; < ELSE < < CHANGED := TRUE; < EXIT; < END IF; < END IF; < END LOOP; < IF P_NAME_INT IS NULL AND < P_NAME_DEF IS NULL THEN < < CHANGED := TRUE; < END IF; < IF CHANGED THEN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 2: ' || < 'one or more partition attributes are changed'); < END IF; < RETURN CHANGED; < END IF; < < < < IF (P_NAME_INT IS NOT NULL) AND (P_NAME_DEF IS NOT NULL) < THEN < BEGIN < SELECT COUNT(1) INTO ITEM < FROM DBA_IND_PARTITIONS < WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND < PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) < GROUP BY COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, < PCT_FREE,INI_TRANS,MAX_TRANS, LOGGING,COMPRESSION, < BUFFER_POOL,FLASH_CACHE,CELL_FLASH_CACHE; < < < EXCEPTION WHEN OTHERS THEN < < < CHANGED := TRUE; < END; < IF CHANGED THEN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 3: common attributes are changed'); < END IF; < RETURN CHANGED; < END IF; < END IF; < BEGIN < IF P_NAME_INT IS NOT NULL THEN < < < SELECT COUNT(*) INTO ITEM < FROM DBA_IND_PARTITIONS < WHERE INDEX_OWNER=I_OWNER AND < INDEX_NAME=I_NAME AND < PARTITION_NAME = P_NAME_INT AND < SUBPARTITION_COUNT = 0 AND < STATUS = 'USABLE' AND < COMPOSITE = 'NO'; < IF ITEM = 0 THEN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 4: attributes of partition ' || < P_NAME_INT || ' are changed'); < END IF; < CHANGED := TRUE; < RETURN CHANGED; < END IF; < < < < < < < SELECT COUNT(*) INTO ITEM < FROM DBA_IND_PARTITIONS I, DBA_PART_INDEXES P, DBA_INDEXES D < WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND < I.PARTITION_NAME = P_NAME_INT AND < I.INDEX_NAME = P.INDEX_NAME AND < I.INDEX_OWNER = D.OWNER AND I.INDEX_NAME= D.INDEX_NAME AND < (P.DEF_TABLESPACE_NAME = I.TABLESPACE_NAME OR < P.DEF_TABLESPACE_NAME IS NULL) < AND < P.DEF_PCT_FREE = I.PCT_FREE AND < P.DEF_INI_TRANS = I.INI_TRANS AND < P.DEF_MAX_TRANS = I.MAX_TRANS AND < (P.DEF_LOGGING = I.LOGGING OR < ((P.DEF_LOGGING = 'NONE' OR P.DEF_LOGGING = 'UNKNOWN') < AND I.LOGGING = 'YES')) < AND < P.DEF_BUFFER_POOL = I.BUFFER_POOL AND < P.DEF_FLASH_CACHE = I.FLASH_CACHE AND < P.DEF_CELL_FLASH_CACHE= I.CELL_FLASH_CACHE AND < P.DEF_INITIAL_EXTENT = 'DEFAULT' AND < P.DEF_NEXT_EXTENT = 'DEFAULT' AND < P.DEF_MIN_EXTENTS = 'DEFAULT' AND < P.DEF_MAX_EXTENTS = 'DEFAULT' AND < P.DEF_MAX_SIZE = 'DEFAULT' AND < P.DEF_PCT_INCREASE = 'DEFAULT' AND < ((P.DEF_FREELISTS = 0 AND < (I.FREELISTS = 1 OR I.FREELISTS IS NULL )) OR < (P.DEF_FREELISTS > 0 AND < P.DEF_FREELISTS = I.FREELISTS)) < AND < ((P.DEF_FREELIST_GROUPS = 0 AND < (I.FREELIST_GROUPS = 1 OR I.FREELIST_GROUPS IS NULL )) OR < (P.DEF_FREELIST_GROUPS > 0 AND < P.DEF_FREELIST_GROUPS = I.FREELIST_GROUPS)) AND < D.COMPRESSION = I.COMPRESSION; < IF ITEM = 0 THEN < CHANGED := TRUE; < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 5: attributes of partition ' || < P_NAME_INT || ' are changed from default'); < END IF; < RETURN CHANGED; < END IF; < < < < < < < SELECT COUNT(*) INTO ITEM < FROM DBA_IND_PARTITIONS I, DBA_TABLESPACES TS < WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND < I.PARTITION_NAME = P_NAME_INT AND < I.TABLESPACE_NAME = TS.TABLESPACE_NAME AND < (TS.NEXT_EXTENT IS NULL OR < I.NEXT_EXTENT = TS.NEXT_EXTENT) AND < (TS.MIN_EXTENTS IS NULL OR < I.MIN_EXTENT = TS.MIN_EXTENTS) AND < (TS.MAX_EXTENTS IS NULL OR < I.MAX_EXTENT = TS.MAX_EXTENTS) AND < (TS.MAX_SIZE IS NULL OR < I.MAX_SIZE = TS.MAX_SIZE) AND < (TS.PCT_INCREASE IS NULL OR < I.PCT_INCREASE = TS.PCT_INCREASE); < IF ITEM = 0 THEN < CHANGED := TRUE; < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 6: storage attributes of partition ' < || P_NAME_INT || ' are changed'); < END IF; < RETURN CHANGED; < END IF; < END IF; < IF P_NAME_DEF IS NOT NULL THEN < < < < < SELECT COUNT(*) INTO ITEM < FROM DBA_IND_PARTITIONS < WHERE INDEX_OWNER=I_OWNER AND < INDEX_NAME=I_NAME AND < PARTITION_NAME = P_NAME_DEF AND < INITIAL_EXTENT IS NULL AND < NEXT_EXTENT IS NULL AND < MIN_EXTENT IS NULL AND < MAX_EXTENT IS NULL AND < MAX_SIZE IS NULL AND < PCT_INCREASE IS NULL AND < FREELISTS IS NULL AND < FREELIST_GROUPS IS NULL; < IF ITEM = 0 THEN < < < < < IF P_NAME_INT IS NOT NULL THEN < BEGIN < SELECT COUNT(1) INTO ITEM < FROM DBA_IND_PARTITIONS < WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND < PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) < GROUP BY INITIAL_EXTENT, MIN_EXTENT, NEXT_EXTENT, < MIN_EXTENT, MAX_EXTENT, MAX_SIZE, PCT_INCREASE, < FREELISTS, FREELIST_GROUPS; < < < EXCEPTION WHEN OTHERS THEN < < CHANGED := TRUE; < END; < ELSE < < CHANGED := TRUE; < END IF; < IF (CHANGED) THEN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 7: partition attributes of ' || < P_NAME_DEF || ' are changed'); < END IF; < RETURN CHANGED; < END IF; < END IF; < END IF; < EXCEPTION WHEN OTHERS THEN < IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN < DBMS_SYSTEM.KSDWRT(1, 'idxpart 8: exception mark as changed'); < END IF; < CHANGED := TRUE; < END; < RETURN CHANGED; < END IDX_PART_ATR_CHG; 1349c1013 < PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER, --- > PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER,
1002a1003,1338 > > > > > > FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, > IDXNAME IN VARCHAR2) RETURN BOOLEAN > IS > IND_CONS NUMBER; > BEGIN > SELECT COUNT(1) INTO IND_CONS > FROM DBA_PART_INDEXES IND > WHERE IND.INDEX_NAME = IDXNAME > AND IND.OWNER = IDXOWNER > AND IND.LOCALITY = 'LOCAL' > AND IND.INTERVAL IS NOT NULL; > IF IND_CONS > 0 THEN > RETURN TRUE; > END IF; > RETURN FALSE; > EXCEPTION WHEN OTHERS THEN > RETURN FALSE; > END IDX_LOC_INT_PART; > > > > > FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN IS > EVENT_VALUE BINARY_INTEGER := 0; > BEGIN > DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); > IF BITAND(EVENT_VALUE, 32) = 32 THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > END IDX_INCLUDE_PARTITIONS; > > > > > > FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN IS > EVENT_VALUE BINARY_INTEGER := 0; > BEGIN > DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); > IF BITAND(EVENT_VALUE, 64) = 64 THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > END IDX_SKIP_ATR_CHK; > > > > > > > > > > > FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, > I_NAME IN VARCHAR2, > T_OWNER IN VARCHAR2, > T_NAME IN VARCHAR2) RETURN BOOLEAN > IS > P_NAME_INT VARCHAR2(128) := NULL; > P_NAME_DEF VARCHAR2(128) := NULL; > CHANGED BOOLEAN := FALSE; > ITEM NUMBER; > CURSOR PATS IS > SELECT MIN(PARTITION_NAME) NAME ,MIN(INTERVAL) INTERVAL > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME > GROUP BY INTERVAL,COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, > PCT_FREE,INI_TRANS,MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT, > MIN_EXTENT,MAX_EXTENT,MAX_SIZE,PCT_INCREASE,FREELISTS, > FREELIST_GROUPS,LOGGING,COMPRESSION,BUFFER_POOL,FLASH_CACHE, > CELL_FLASH_CACHE,PARAMETERS,DOMIDX_OPSTATUS; > BEGIN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart : index ' || I_OWNER || '.' || I_NAME || > ' on ' || T_OWNER || '.' || T_NAME); > END IF; > > > > IF (IDX_SKIP_ATR_CHK) THEN > RETURN FALSE; > END IF; > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_TAB_PARTITIONS U, DBA_IND_PARTITIONS I > WHERE U.TABLE_OWNER=T_OWNER AND U.TABLE_NAME = T_NAME > AND I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME = I_NAME > AND U.PARTITION_POSITION=I.PARTITION_POSITION > AND U.PARTITION_NAME != I.PARTITION_NAME; > IF ITEM >0 THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 1: partition names are changed'); > END IF; > CHANGED := TRUE; > RETURN CHANGED; > END IF; > > > > > > > > FOR PAT IN PATS LOOP > IF (PATS%ROWCOUNT > 2 ) THEN > > CHANGED := TRUE; > EXIT; > END IF; > IF PAT.INTERVAL = 'NO' THEN > IF P_NAME_DEF IS NULL THEN > P_NAME_DEF := PAT.NAME; > ELSE > > CHANGED := TRUE; > EXIT; > END IF; > ELSE > IF P_NAME_INT IS NULL THEN > P_NAME_INT := PAT.NAME; > ELSE > > CHANGED := TRUE; > EXIT; > END IF; > END IF; > END LOOP; > IF P_NAME_INT IS NULL AND > P_NAME_DEF IS NULL THEN > > CHANGED := TRUE; > END IF; > IF CHANGED THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 2: ' || > 'one or more partition attributes are changed'); > END IF; > RETURN CHANGED; > END IF; > > > > IF (P_NAME_INT IS NOT NULL) AND (P_NAME_DEF IS NOT NULL) > THEN > BEGIN > SELECT COUNT(1) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND > PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) > GROUP BY COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, > PCT_FREE,INI_TRANS,MAX_TRANS, LOGGING,COMPRESSION, > BUFFER_POOL,FLASH_CACHE,CELL_FLASH_CACHE; > > > EXCEPTION WHEN OTHERS THEN > > > CHANGED := TRUE; > END; > IF CHANGED THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 3: common attributes are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > BEGIN > IF P_NAME_INT IS NOT NULL THEN > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND > INDEX_NAME=I_NAME AND > PARTITION_NAME = P_NAME_INT AND > SUBPARTITION_COUNT = 0 AND > STATUS = 'USABLE' AND > COMPOSITE = 'NO'; > IF ITEM = 0 THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 4: attributes of partition ' || > P_NAME_INT || ' are changed'); > END IF; > CHANGED := TRUE; > RETURN CHANGED; > END IF; > > > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS I, DBA_PART_INDEXES P, DBA_INDEXES D > WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND > I.PARTITION_NAME = P_NAME_INT AND > I.INDEX_NAME = P.INDEX_NAME AND > I.INDEX_OWNER = D.OWNER AND I.INDEX_NAME= D.INDEX_NAME AND > (P.DEF_TABLESPACE_NAME = I.TABLESPACE_NAME OR > P.DEF_TABLESPACE_NAME IS NULL) > AND > P.DEF_PCT_FREE = I.PCT_FREE AND > P.DEF_INI_TRANS = I.INI_TRANS AND > P.DEF_MAX_TRANS = I.MAX_TRANS AND > (P.DEF_LOGGING = I.LOGGING OR > ((P.DEF_LOGGING = 'NONE' OR P.DEF_LOGGING = 'UNKNOWN') > AND I.LOGGING = 'YES')) > AND > P.DEF_BUFFER_POOL = I.BUFFER_POOL AND > P.DEF_FLASH_CACHE = I.FLASH_CACHE AND > P.DEF_CELL_FLASH_CACHE= I.CELL_FLASH_CACHE AND > P.DEF_INITIAL_EXTENT = 'DEFAULT' AND > P.DEF_NEXT_EXTENT = 'DEFAULT' AND > P.DEF_MIN_EXTENTS = 'DEFAULT' AND > P.DEF_MAX_EXTENTS = 'DEFAULT' AND > P.DEF_MAX_SIZE = 'DEFAULT' AND > P.DEF_PCT_INCREASE = 'DEFAULT' AND > ((P.DEF_FREELISTS = 0 AND > (I.FREELISTS = 1 OR I.FREELISTS IS NULL )) OR > (P.DEF_FREELISTS > 0 AND > P.DEF_FREELISTS = I.FREELISTS)) > AND > ((P.DEF_FREELIST_GROUPS = 0 AND > (I.FREELIST_GROUPS = 1 OR I.FREELIST_GROUPS IS NULL )) OR > (P.DEF_FREELIST_GROUPS > 0 AND > P.DEF_FREELIST_GROUPS = I.FREELIST_GROUPS)) AND > D.COMPRESSION = I.COMPRESSION; > IF ITEM = 0 THEN > CHANGED := TRUE; > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 5: attributes of partition ' || > P_NAME_INT || ' are changed from default'); > END IF; > RETURN CHANGED; > END IF; > > > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS I, DBA_TABLESPACES TS > WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND > I.PARTITION_NAME = P_NAME_INT AND > I.TABLESPACE_NAME = TS.TABLESPACE_NAME AND > (TS.NEXT_EXTENT IS NULL OR > I.NEXT_EXTENT = TS.NEXT_EXTENT) AND > (TS.MIN_EXTENTS IS NULL OR > I.MIN_EXTENT = TS.MIN_EXTENTS) AND > (TS.MAX_EXTENTS IS NULL OR > I.MAX_EXTENT = TS.MAX_EXTENTS) AND > (TS.MAX_SIZE IS NULL OR > I.MAX_SIZE = TS.MAX_SIZE) AND > (TS.PCT_INCREASE IS NULL OR > I.PCT_INCREASE = TS.PCT_INCREASE); > IF ITEM = 0 THEN > CHANGED := TRUE; > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 6: storage attributes of partition ' > || P_NAME_INT || ' are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > IF P_NAME_DEF IS NOT NULL THEN > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND > INDEX_NAME=I_NAME AND > PARTITION_NAME = P_NAME_DEF AND > INITIAL_EXTENT IS NULL AND > NEXT_EXTENT IS NULL AND > MIN_EXTENT IS NULL AND > MAX_EXTENT IS NULL AND > MAX_SIZE IS NULL AND > PCT_INCREASE IS NULL AND > FREELISTS IS NULL AND > FREELIST_GROUPS IS NULL; > IF ITEM = 0 THEN > > > > > IF P_NAME_INT IS NOT NULL THEN > BEGIN > SELECT COUNT(1) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND > PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) > GROUP BY INITIAL_EXTENT, MIN_EXTENT, NEXT_EXTENT, > MIN_EXTENT, MAX_EXTENT, MAX_SIZE, PCT_INCREASE, > FREELISTS, FREELIST_GROUPS; > > > EXCEPTION WHEN OTHERS THEN > > CHANGED := TRUE; > END; > ELSE > > CHANGED := TRUE; > END IF; > IF (CHANGED) THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 7: partition attributes of ' || > P_NAME_DEF || ' are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > END IF; > EXCEPTION WHEN OTHERS THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 8: exception mark as changed'); > END IF; > CHANGED := TRUE; > END; > RETURN CHANGED; > END IDX_PART_ATR_CHG; 1013c1349 < PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER, --- > PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER,
452,453c452,454 < SECURE_OWNER := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(TABOWNER); < SECURE_NAME := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(TABNAME); --- > > SECURE_OWNER := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABOWNER); > SECURE_NAME := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABNAME); 581,582c582,584 < SECURE_OWNER := TABOWNER; < SECURE_NAME := TABNAME; --- > > SECURE_OWNER := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABOWNER); > SECURE_NAME := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABNAME);
575a576,579 > ELSIF (SEGMENT_TYPE = 'TABLE PARTITION') THEN > V_PART_NAME := SUBSTR(PARTITION_NAME, 1, 30); > V_TABLE_NAME := SUBSTR(SEGMENT_NAME, 1, 30); > 589c593 < IF (V_SEG_TYPE != 'TABLE') THEN --- > IF (V_SEG_TYPE != 'TABLE' AND V_SEG_TYPE != 'TABLE PARTITION') THEN 612a617,620 > NULL, NULL); > ELSIF (V_SEG_TYPE = 'TABLE PARTITION') THEN > > ASSM_SEGMENT_REPAIR(V_OWNER, V_TABLE_NAME, V_SEG_TYPE, V_PART_NAME, 29,
51435,51492d51434 < < < < < < < < < < < < < < PROCEDURE INIT_ADVISOR_TASK_PARAMETER( < TASK_NAME IN VARCHAR2, < PARAMETER IN VARCHAR2, < VALUE IN VARCHAR2) < IS < IN_EXEC BOOLEAN := FALSE; < BEGIN < < < < BEGIN < DBMS_STATS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, PARAMETER, VALUE); < EXCEPTION < WHEN OTHERS THEN < IF (SQLCODE = -13647) THEN < IN_EXEC := TRUE; < ELSE < RAISE; < END IF; < END; < < < < < IF (IN_EXEC = TRUE) THEN < < BEGIN < DBMS_STATS_ADVISOR.CANCEL_TASK(TASK_NAME); < EXCEPTION < WHEN OTHERS THEN < < < < IF (IS_URGENT_ERROR) THEN < RAISE; < END IF; < END; < < DBMS_STATS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, PARAMETER, VALUE); < < END IF; < < END INIT_ADVISOR_TASK_PARAMETER; < < 51498,51509d51439 < < < < < < < < < < < < 51519,51523d51448 < ELSE < INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ASTAT, < 'DAYS_TO_EXPIRE', 'UNLIMITED'); < INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ASTAT, < 'EXECUTION_DAYS_TO_EXPIRE', 30); 51532,51536d51456 < ELSE < INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ISTAT, < 'DAYS_TO_EXPIRE', 'UNLIMITED'); < INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ISTAT, < 'EXECUTION_DAYS_TO_EXPIRE', 30);
34992a34993 > TRANS_GTT BOOLEAN; 34994d34994 < 35079c35079,35087 < FLUSH_ONE_MON_INFO(TOBJN); --- > IF (NOT DBMS_STATS_INTERNAL.IS_TEMP_TAB(NULL, NULL, TOBJN, TRANS_GTT)) > THEN > > > > > > FLUSH_ONE_MON_INFO(TOBJN); > END IF; 35740d35747 < 35744c35751,35752 < BEGIN --- > TRANS_GTT BOOLEAN; > BEGIN 36417c36425,36427 < (PREPARESTATJOBS OR SEQSTATJOBS)) THEN --- > (PREPARESTATJOBS OR SEQSTATJOBS) AND > NOT DBMS_STATS_INTERNAL.IS_TEMP_TAB(NULL, NULL, TOBJN, TRANS_GTT)) > THEN 36419a36430,36436 > > > > > > >
51434a51435,51492 > > > > > > > > > > > > > > PROCEDURE INIT_ADVISOR_TASK_PARAMETER( > TASK_NAME IN VARCHAR2, > PARAMETER IN VARCHAR2, > VALUE IN VARCHAR2) > IS > IN_EXEC BOOLEAN := FALSE; > BEGIN > > > > BEGIN > DBMS_STATS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, PARAMETER, VALUE); > EXCEPTION > WHEN OTHERS THEN > IF (SQLCODE = -13647) THEN > IN_EXEC := TRUE; > ELSE > RAISE; > END IF; > END; > > > > > IF (IN_EXEC = TRUE) THEN > > BEGIN > DBMS_STATS_ADVISOR.CANCEL_TASK(TASK_NAME); > EXCEPTION > WHEN OTHERS THEN > > > > IF (IS_URGENT_ERROR) THEN > RAISE; > END IF; > END; > > DBMS_STATS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, PARAMETER, VALUE); > > END IF; > > END INIT_ADVISOR_TASK_PARAMETER; > > 51439a51498,51509 > > > > > > > > > > > > 51448a51519,51523 > ELSE > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ASTAT, > 'DAYS_TO_EXPIRE', 'UNLIMITED'); > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ASTAT, > 'EXECUTION_DAYS_TO_EXPIRE', 30); 51456a51532,51536 > ELSE > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ISTAT, > 'DAYS_TO_EXPIRE', 'UNLIMITED'); > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ISTAT, > 'EXECUTION_DAYS_TO_EXPIRE', 30);
3307,3316d3306 < < < < < DBMS_STATS.SET_ADVISOR_TASK_PARAMETER(TNAME, < 'DAYS_TO_EXPIRE', 'UNLIMITED'); < DBMS_STATS.SET_ADVISOR_TASK_PARAMETER(TNAME, < 'EXECUTION_DAYS_TO_EXPIRE', 30); < < 4590,4596d4579 < < < WHEN UPPER(PARAMETER) = 'DAYS_TO_EXPIRE' THEN < DBMS_ADVISOR.SET_TASK_PARAMETER(TNAMEU, PARAMETER, VALUE); < < WHEN UPPER(PARAMETER) = 'EXECUTION_DAYS_TO_EXPIRE' THEN < DBMS_ADVISOR.SET_TASK_PARAMETER(TNAMEU, PARAMETER, VALUE);
3306a3307,3316 > > > > > DBMS_STATS.SET_ADVISOR_TASK_PARAMETER(TNAME, > 'DAYS_TO_EXPIRE', 'UNLIMITED'); > DBMS_STATS.SET_ADVISOR_TASK_PARAMETER(TNAME, > 'EXECUTION_DAYS_TO_EXPIRE', 30); > > 4579a4590,4596 > > > WHEN UPPER(PARAMETER) = 'DAYS_TO_EXPIRE' THEN > DBMS_ADVISOR.SET_TASK_PARAMETER(TNAMEU, PARAMETER, VALUE); > > WHEN UPPER(PARAMETER) = 'EXECUTION_DAYS_TO_EXPIRE' THEN > DBMS_ADVISOR.SET_TASK_PARAMETER(TNAMEU, PARAMETER, VALUE);
26102c26102 < COMMON_SECTIONS_INITIALIZED := FALSE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := FALSE; 26283c26283 < COMMON_SECTIONS_INITIALIZED := FALSE; --- > DBMS_AWR_PROTECTED.COMMON_SECTIONS_INITIALIZED := FALSE;
571,572c571,574 < < MV_NAME VARCHAR2(258) := NULL; --- > > > > MV_NAME VARCHAR2(2*(ORA_MAX_NAME_LEN + 2) + 1) := NULL; 575c577 < MV_NAME := REC.SOWNER || '.' || REC.VNAME; --- > MV_NAME := '"' || REC.SOWNER || '"."' || REC.VNAME || '"';
25553c25553 < V_SINGLE_DDL_CLOB); --- > DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB, 1500, 1)); 26043c26043,26046 < SEND_TRACE_MSG(NULL, 'In RECREATE_DDL with bind_pattern: ' || BIND_PATTERN); --- > SEND_TRACE_MSG(NULL, 'In RECREATE_DDL with bind_pattern: ' || > NVL(TO_CHAR(BIND_PATTERN), 'NULL') || ', ddllen=' || > LENGTH(V_SINGLE_DDL_CLOB) || ', ' || > DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB,250,1)); 32967c32970 < SUBSTR(NVL(NVL(RTN, V_EXT_RTN), MSG), 0, KUPCC.K_1K); --- > SUBSTRB(NVL(NVL(RTN, V_EXT_RTN), MSG), 0, KUPCC.K_1K);
5929,5930c5929 < TRACE(ILM_DEBUG_ENTRY_EXIT, < 'Exiting execute_ilm_policies '); --- > 5932,5936d5930 < BEGIN < PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); < EXCEPTION < WHEN OTHERS THEN < 5939,5941c5933,5939 < NULL; < END; < --- > > IF (V_TAB_ILMJOB.COUNT > 0) THEN > BEGIN > PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); > EXCEPTION > WHEN OTHERS THEN > 5944c5942,5955 < PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); --- > NULL; > END; > > > > PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); > ELSE > > UPDATE SYS.ILM_EXECUTION$ ILMEXE > SET COMPLETION_TIME = SYSTIMESTAMP, > EXECUTION_STATE = ILM_TASK_COMPLETE > WHERE ILMEXE.EXECUTION_ID = EXECUTE_ILM_POLICIES.EXECUTION_ID; > END IF; > 7875c7886,7887 < WHERE V_TABTASKINFO(I).N_UNRESOL = 0; --- > WHERE V_TABTASKINFO(I).N_UNRESOL = 0 > AND EXECUTION_ID = V_TABTASKINFO(I).TASK_ID;
7834a7835,7847 > > > > > > > > > > > > > 7836,7859c7849,7864 < SELECT B.EXECUTION_ID, < NVL(A.N_COUNT,0), < A.COMP_TIME < FROM < ( SELECT A.EXECUTION_ID, < COUNT(*) N_COUNT, < NVL(MAX(B.COMPLETION_TIME), SYSDATE) COMP_TIME < FROM SYS.ILM_EXECUTION$ A, < SYS.ILM_RESULTS$ B < WHERE EXECUTION_STATE = ILM_TASK_ACTIVE < AND A.EXECUTION_ID = B.EXECUTION_ID < AND B.JOB_STATUS NOT IN (ILMJOB_SUCCESS, < ILMJOB_FAILED, < ILMJOB_FAILED_REBUILD_DEP, < ILMJOB_STOPPED, < ILMJOB_CREATION_FAILED, < ILMJOB_STATE_OTHER) < GROUP BY A.EXECUTION_ID < )A, < ILM_EXECUTION$ B < WHERE B.EXECUTION_ID = A.EXECUTION_ID (+) < AND EXECUTION_STATE = ILM_TASK_ACTIVE < AND (ROWNUM <= N_TASKS < OR N_TASKS = ALL_UNRESOL_TASKS); --- > SELECT C.EXECUTION_ID, > (SELECT COUNT(*) N_COUNT FROM SYS.ILM_RESULTS$ A > WHERE A.EXECUTION_ID = C.EXECUTION_ID > AND A.JOB_STATUS NOT IN (ILMJOB_SUCCESS, > ILMJOB_FAILED, > ILMJOB_FAILED_REBUILD_DEP, > ILMJOB_STOPPED, > ILMJOB_CREATION_FAILED, > ILMJOB_STATE_OTHER)) N_COUNT, > (SELECT NVL(MAX(B.COMPLETION_TIME), SYSDATE) COMP_TIME > FROM SYS.ILM_RESULTS$ B > WHERE B.EXECUTION_ID = C.EXECUTION_ID) COMP_TIME > FROM SYS.ILM_EXECUTION$ C > WHERE C.EXECUTION_STATE = ILM_TASK_ACTIVE > AND (ROWNUM <= N_TASKS > OR N_TASKS = ALL_UNRESOL_TASKS);
5929,5932c5929,5930 < < < < --- > TRACE(ILM_DEBUG_ENTRY_EXIT, > 'Exiting execute_ilm_policies '); 5934,5940c5932,5936 < IF (V_TAB_ILMJOB.COUNT > 0) THEN < BEGIN < PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); < EXCEPTION < WHEN OTHERS THEN < < --- > BEGIN > PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); > EXCEPTION > WHEN OTHERS THEN > 5942,5944d5937 < NULL; < END; < 5945a5939,5941 > NULL; > END; > 5947,5954d5942 < PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); < ELSE < < UPDATE SYS.ILM_EXECUTION$ ILMEXE < SET COMPLETION_TIME = SYSTIMESTAMP, < EXECUTION_STATE = ILM_TASK_COMPLETE < WHERE ILMEXE.EXECUTION_ID = EXECUTE_ILM_POLICIES.EXECUTION_ID; < END IF; 5955a5944 > PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); 7886,7887c7875 < WHERE V_TABTASKINFO(I).N_UNRESOL = 0 < AND EXECUTION_ID = V_TABTASKINFO(I).TASK_ID; --- > WHERE V_TABTASKINFO(I).N_UNRESOL = 0;
6a7 > when e.flags > 255 then 'UNDEFINED' 8c9,10 < when (bitand(e.flags, 132) = 132) then 'PROCEDURE ERROR WITH LCRS' --- > when (bitand(e.flags, 32) = 32) then 'REPLICAT RETRIED' > when (bitand(e.flags, 130) = 130) then 'PROCEDURE ERROR WITH LCRS' 11,14c13,22 < when (bitand(e.flags, 66) = 66) then 'CONFLICT INFO, RECORD LCR' < when (bitand(e.flags, 2) = 2) then 'RECORD LCR' < when (bitand(e.flags, 16) = 16) then 'RECORD TXN NO LCRS' < else 'RECORD TXN WITH LCRS' --- > when (bitand(e.flags, 66) = 66) then 'CONFLICT INFO, RECORD LCR' > when (bitand(e.flags, 2) = 2) then 'RECORD LCR' > when (bitand(e.flags, 128) = 128) then 'PROCEDURE ERROR NO LCRS' > when (bitand(e.flags, 16) = 16) then 'RECORD TXN NO LCRS' > else 'RECORD TXN WITH LCRS' > end) > when (bitand(e.flags, 16) = 16) then > (case > when (bitand(e.flags, 128) = 128) then 'PROCEDURE ERROR NO LCRS' > else 'UNHANDLED ERROR NO LCRS' 16d23 < when (bitand(e.flags, 16) = 16) then 'UNHANDLED ERROR NO LCRS' 18c25 < else NULL --- > else 'UNHANDLED ERROR WITH LCRS'
7d6 < when e.flags > 255 then 'UNDEFINED' 9,10c8 < when (bitand(e.flags, 32) = 32) then 'REPLICAT RETRIED' < when (bitand(e.flags, 130) = 130) then 'PROCEDURE ERROR WITH LCRS' --- > when (bitand(e.flags, 132) = 132) then 'PROCEDURE ERROR WITH LCRS' 13,22c11,14 < when (bitand(e.flags, 66) = 66) then 'CONFLICT INFO, RECORD LCR' < when (bitand(e.flags, 2) = 2) then 'RECORD LCR' < when (bitand(e.flags, 128) = 128) then 'PROCEDURE ERROR NO LCRS' < when (bitand(e.flags, 16) = 16) then 'RECORD TXN NO LCRS' < else 'RECORD TXN WITH LCRS' < end) < when (bitand(e.flags, 16) = 16) then < (case < when (bitand(e.flags, 128) = 128) then 'PROCEDURE ERROR NO LCRS' < else 'UNHANDLED ERROR NO LCRS' --- > when (bitand(e.flags, 66) = 66) then 'CONFLICT INFO, RECORD LCR' > when (bitand(e.flags, 2) = 2) then 'RECORD LCR' > when (bitand(e.flags, 16) = 16) then 'RECORD TXN NO LCRS' > else 'RECORD TXN WITH LCRS' 23a16 > when (bitand(e.flags, 16) = 16) then 'UNHANDLED ERROR NO LCRS' 25c18 < else 'UNHANDLED ERROR WITH LCRS' --- > else NULL
18.0.0.0
2c2,3 < ACCESSIBLE BY (DBMS_AWR_REPORT_LAYOUT, DBMS_SWRF_REPORT_INTERNAL) --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT, > PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL)
2c2,3 < ACCESSIBLE BY (DBMS_AWR_REPORT_LAYOUT, DBMS_SWRF_REPORT_INTERNAL) --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT, > PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL)
12c12
< bannerVersion CONSTANT VARCHAR2(15) := '18.08.00.00';
---
> bannerVersion CONSTANT VARCHAR2(15) := '18.09.00.00';
24,26c24,26
< fsn CONSTANT NUMBER := instr('18.08.00.00', '.');
< msn CONSTANT NUMBER := instr('18.08.00.00', '.', fsn + 1);
< psn CONSTANT NUMBER := instr('18.08.00.00', '.', msn + 1);
---
> fsn CONSTANT NUMBER := instr('18.09.00.00', '.');
> msn CONSTANT NUMBER := instr('18.09.00.00', '.', fsn + 1);
> psn CONSTANT NUMBER := instr('18.09.00.00', '.', msn + 1);
29c29
< to_number(substr('18.08.00.00', 1, fsn - 1));
---
> to_number(substr('18.09.00.00', 1, fsn - 1));
31c31
< to_number(substr('18.08.00.00', fsn + 1, msn - fsn - 1));
---
> to_number(substr('18.09.00.00', fsn + 1, msn - fsn - 1));
33c33
< to_number(substr('18.08.00.00', msn + 1, psn - msn - 1));
---
> to_number(substr('18.09.00.00', msn + 1, psn - msn - 1));
35c35
< to_number(substr('18.08.00.00', psn + 1));
---
> to_number(substr('18.09.00.00', psn + 1));
12c12
< bannerVersion CONSTANT VARCHAR2(15) := '18.08.00.00';
---
> bannerVersion CONSTANT VARCHAR2(15) := '18.08.01.00';
24,26c24,26
< fsn CONSTANT NUMBER := instr('18.08.00.00', '.');
< msn CONSTANT NUMBER := instr('18.08.00.00', '.', fsn + 1);
< psn CONSTANT NUMBER := instr('18.08.00.00', '.', msn + 1);
---
> fsn CONSTANT NUMBER := instr('18.08.01.00', '.');
> msn CONSTANT NUMBER := instr('18.08.01.00', '.', fsn + 1);
> psn CONSTANT NUMBER := instr('18.08.01.00', '.', msn + 1);
29c29
< to_number(substr('18.08.00.00', 1, fsn - 1));
---
> to_number(substr('18.08.01.00', 1, fsn - 1));
31c31
< to_number(substr('18.08.00.00', fsn + 1, msn - fsn - 1));
---
> to_number(substr('18.08.01.00', fsn + 1, msn - fsn - 1));
33c33
< to_number(substr('18.08.00.00', msn + 1, psn - msn - 1));
---
> to_number(substr('18.08.01.00', msn + 1, psn - msn - 1));
35c35
< to_number(substr('18.08.00.00', psn + 1));
---
> to_number(substr('18.08.01.00', psn + 1));
12c12
< bannerVersion CONSTANT VARCHAR2(15) := '18.07.01.00';
---
> bannerVersion CONSTANT VARCHAR2(15) := '18.07.02.00';
24,26c24,26
< fsn CONSTANT NUMBER := instr('18.07.01.00', '.');
< msn CONSTANT NUMBER := instr('18.07.01.00', '.', fsn + 1);
< psn CONSTANT NUMBER := instr('18.07.01.00', '.', msn + 1);
---
> fsn CONSTANT NUMBER := instr('18.07.02.00', '.');
> msn CONSTANT NUMBER := instr('18.07.02.00', '.', fsn + 1);
> psn CONSTANT NUMBER := instr('18.07.02.00', '.', msn + 1);
29c29
< to_number(substr('18.07.01.00', 1, fsn - 1));
---
> to_number(substr('18.07.02.00', 1, fsn - 1));
31c31
< to_number(substr('18.07.01.00', fsn + 1, msn - fsn - 1));
---
> to_number(substr('18.07.02.00', fsn + 1, msn - fsn - 1));
33c33
< to_number(substr('18.07.01.00', msn + 1, psn - msn - 1));
---
> to_number(substr('18.07.02.00', msn + 1, psn - msn - 1));
35c35
< to_number(substr('18.07.01.00', psn + 1));
---
> to_number(substr('18.07.02.00', psn + 1));
2c2 < ACCESSIBLE BY (DBMS_MVIEW_STATS) IS --- > ACCESSIBLE BY (PACKAGE DBMS_MVIEW_STATS) IS
13c13 < '18.7.1.0.0'; --- > '18.7.2.0.0';
13c13 < '18.8.0.0.0'; --- > '18.9.0.0.0';
13c13 < '18.8.0.0.0'; --- > '18.8.1.0.0';
2c2 < ACCESSIBLE BY (DBMS_SYNC_REFRESH) IS --- > ACCESSIBLE BY (PACKAGE DBMS_SYNC_REFRESH) IS
2,5c2,5 < ACCESSIBLE BY (DBMS_WORKLOAD_REPOSITORY < ,DBMS_SWRF_REPORT_INTERNAL < ,DBMS_AWR_REPORT_LAYOUT < ,DBMS_ASH_INTERNAL) AS --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_WORKLOAD_REPOSITORY > ,PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL > ,PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT > ,PACKAGE SYS.DBMS_ASH_INTERNAL) AS
2,5c2,6 < ACCESSIBLE BY (DBMS_WORKLOAD_REPOSITORY < ,DBMS_SWRF_REPORT_INTERNAL < ,DBMS_AWR_REPORT_LAYOUT < ,DBMS_ASH_INTERNAL) AS --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_WORKLOAD_REPOSITORY > ,PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL > ,PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT > ,PACKAGE SYS.DBMS_ASH_INTERNAL) AS >
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.08.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.08.01.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.07.01.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.07.02.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.08.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.09.00.00';
36710a36711 > TRANS_GTT BOOLEAN; 36716a36718 > 36907,36909c36909,36918 < < DBMS_STATS_INTERNAL.ADDOBJTONUMTAB(OBJTAB, TOBJN); < FLUSHMONMODINFO(OBJTAB); --- > IF (NOT DBMS_STATS_INTERNAL.IS_TEMP_TAB(NULL, NULL, TOBJN, TRANS_GTT)) > THEN > > > > > > DBMS_STATS_INTERNAL.ADDOBJTONUMTAB(OBJTAB, TOBJN); > FLUSHMONMODINFO(OBJTAB); > END IF; 37623d37631 < 37625a37634 > TRANS_GTT BOOLEAN; 37629d37637 < 38325c38333,38338 < (PREPARESTATJOBS OR SEQSTATJOBS)) THEN --- > (PREPARESTATJOBS OR SEQSTATJOBS) AND > NOT DBMS_STATS_INTERNAL.IS_TEMP_TAB(NULL, NULL, TOBJN, TRANS_GTT)) > THEN > > > 38327a38341,38344 > > > >
26311c26311 < V_SINGLE_DDL_CLOB); --- > DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB, 1500, 1)); 26824,26825c26824,26827 < SEND_TRACE_MSG(NULL, 'In RECREATE_DDL with bind_pattern: ' || BIND_PATTERN || < ' '||DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB,100,1)); --- > SEND_TRACE_MSG(NULL, 'In RECREATE_DDL with bind_pattern: ' || > NVL(TO_CHAR(BIND_PATTERN), 'NULL') || ', ddllen=' || > LENGTH(V_SINGLE_DDL_CLOB) || ', ' || > DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB,250,1)); 33670c33672 < SUBSTR(NVL(NVL(RTN, V_EXT_RTN), FACILITY || L_SPACER || MSG), --- > SUBSTRB(NVL(NVL(RTN, V_EXT_RTN), FACILITY || L_SPACER || MSG),
7865a7866,7878 > > > > > > > > > > > > > 7867,7890c7880,7895 < SELECT B.EXECUTION_ID, < NVL(A.N_COUNT,0), < A.COMP_TIME < FROM < ( SELECT A.EXECUTION_ID, < COUNT(*) N_COUNT, < NVL(MAX(B.COMPLETION_TIME), SYSDATE) COMP_TIME < FROM SYS.ILM_EXECUTION$ A, < SYS.ILM_RESULTS$ B < WHERE EXECUTION_STATE = ILM_TASK_ACTIVE < AND A.EXECUTION_ID = B.EXECUTION_ID < AND B.JOB_STATUS NOT IN (ILMJOB_SUCCESS, < ILMJOB_FAILED, < ILMJOB_FAILED_REBUILD_DEP, < ILMJOB_STOPPED, < ILMJOB_CREATION_FAILED, < ILMJOB_STATE_OTHER) < GROUP BY A.EXECUTION_ID < )A, < ILM_EXECUTION$ B < WHERE B.EXECUTION_ID = A.EXECUTION_ID (+) < AND EXECUTION_STATE = ILM_TASK_ACTIVE < AND (ROWNUM <= N_TASKS < OR N_TASKS = ALL_UNRESOL_TASKS); --- > SELECT C.EXECUTION_ID, > (SELECT COUNT(*) N_COUNT FROM SYS.ILM_RESULTS$ A > WHERE A.EXECUTION_ID = C.EXECUTION_ID > AND A.JOB_STATUS NOT IN (ILMJOB_SUCCESS, > ILMJOB_FAILED, > ILMJOB_FAILED_REBUILD_DEP, > ILMJOB_STOPPED, > ILMJOB_CREATION_FAILED, > ILMJOB_STATE_OTHER)) N_COUNT, > (SELECT NVL(MAX(B.COMPLETION_TIME), SYSDATE) COMP_TIME > FROM SYS.ILM_RESULTS$ B > WHERE B.EXECUTION_ID = C.EXECUTION_ID) COMP_TIME > FROM SYS.ILM_EXECUTION$ C > WHERE C.EXECUTION_STATE = ILM_TASK_ACTIVE > AND (ROWNUM <= N_TASKS > OR N_TASKS = ALL_UNRESOL_TASKS);
19.0.0.0
2017a2018,2156 > --------------------------- Jena helper functions ------------------------ > -- Needed because of restrictions in ATP-D environment. Regular users -- > -- cannot create Java stored procedures, so we need to create these -- > -- at install time as MDSYS. -- > -------------------------------------------------------------------------- > PROCEDURE ORACLE_ORARDF_S2SGETSRC ( > query varchar2, > nsp MDSYS.RDF_Aliases, > defaultG_out OUT MDSYS.RDF_GRAPHS, > sig_out OUT MDSYS.RDF_GRAPHS); > > PROCEDURE ORACLE_ORARDF_S2SGETSRCCLOB ( > query clob, > nsp MDSYS.RDF_Aliases, > defaultG_out OUT MDSYS.RDF_GRAPHS, > sig_out OUT MDSYS.RDF_GRAPHS); > > PROCEDURE ORACLE_ORARDF_S2SSVR ( > attrs SYS.ODCINumberList, > query varchar2, > models MDSYS.RDF_Models, > precompIdx varchar2, > idxStatus varchar2, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2); > > PROCEDURE ORACLE_ORARDF_S2SSVRNG ( > attrs SYS.ODCINumberList, > query varchar2, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number, > networkOwner varchar2, > networkName varchar2); > > PROCEDURE ORACLE_ORARDF_S2SSVRNGCLOB ( > attrs SYS.ODCINumberList, > query clob, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number, > networkOwner varchar2, > networkName varchar2); > > PROCEDURE ORACLE_ORARDF_S2SSVRNGNPV ( > attrs SYS.ODCINumberList, > query varchar2, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number); > > PROCEDURE ORACLE_ORARDF_S2SSVRNGCLOBNPV ( > attrs SYS.ODCINumberList, > query clob, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number); > > FUNCTION ORACLE_ORARDF_SGC ( > query varchar2) > RETURN MDSYS.RDF_varcharArray; > > FUNCTION ORACLE_ORARDF_SGCCLOB ( > query clob) > RETURN MDSYS.RDF_varcharArray; > > -------------------- End Jena Helper Functions --------------------------- >
354a355,634 > --------------------------- Jena helper functions ------------------------ > -- Needed because of restrictions in ATP-D environment. Regular users -- > -- cannot create Java stored procedures, so we need to create these -- > -- at install time as MDSYS. -- > -------------------------------------------------------------------------- > PROCEDURE ORACLE_ORARDF_S2SGETSRC ( > query varchar2, > nsp MDSYS.RDF_Aliases, > defaultG_out OUT MDSYS.RDF_GRAPHS, > sig_out OUT MDSYS.RDF_GRAPHS) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.getSources( > java.lang.String, > oracle.sql.ARRAY, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[])'; > > PROCEDURE ORACLE_ORARDF_S2SGETSRCCLOB ( > query clob, > nsp MDSYS.RDF_Aliases, > defaultG_out OUT MDSYS.RDF_GRAPHS, > sig_out OUT MDSYS.RDF_GRAPHS) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.getSources( > oracle.jdbc.OracleClob, > oracle.sql.ARRAY, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[])'; > > PROCEDURE ORACLE_ORARDF_S2SSVR ( > attrs SYS.ODCINumberList, > query varchar2, > models MDSYS.RDF_Models, > precompIdx varchar2, > idxStatus varchar2, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.translateQueryPattern( > oracle.sql.ARRAY, > java.lang.String, > oracle.sql.ARRAY, > java.lang.String, > java.lang.String, > oracle.sql.ARRAY, > int, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[], > java.lang.String, > java.lang.String, > int[], > oracle.sql.ARRAY[], > java.lang.String[])'; > > PROCEDURE ORACLE_ORARDF_S2SSVRNG ( > attrs SYS.ODCINumberList, > query varchar2, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number, > networkOwner varchar2, > networkName varchar2) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.translateQueryPattern( > oracle.sql.ARRAY, > java.lang.String, > oracle.sql.ARRAY, > java.lang.String, > long, > java.lang.String, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > int, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[], > java.lang.String, > java.lang.String, > int[], > oracle.sql.ARRAY[], > java.lang.String[], > oracle.sql.ARRAY, > int, > java.lang.String, > java.lang.String)'; > > PROCEDURE ORACLE_ORARDF_S2SSVRNGCLOB ( > attrs SYS.ODCINumberList, > query clob, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number, > networkOwner varchar2, > networkName varchar2) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.translateQueryPattern( > oracle.sql.ARRAY, > oracle.jdbc.OracleClob, > oracle.sql.ARRAY, > java.lang.String, > long, > java.lang.String, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > int, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[], > java.lang.String, > java.lang.String, > int[], > oracle.sql.ARRAY[], > java.lang.String[], > oracle.sql.ARRAY, > int, > java.lang.String, > java.lang.String)'; > > PROCEDURE ORACLE_ORARDF_S2SSVRNGNPV ( > attrs SYS.ODCINumberList, > query varchar2, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.translateQueryPattern( > oracle.sql.ARRAY, > java.lang.String, > oracle.sql.ARRAY, > java.lang.String, > long, > java.lang.String, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > int, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[], > java.lang.String, > java.lang.String, > int[], > oracle.sql.ARRAY[], > java.lang.String[], > oracle.sql.ARRAY, > int)'; > > PROCEDURE ORACLE_ORARDF_S2SSVRNGCLOBNPV ( > attrs SYS.ODCINumberList, > query clob, > models MDSYS.RDF_Models, > precompIdx varchar2, > precompIdxID number, > idxStatus varchar2, > defaultGIDs SYS.ODCINumberList, > namedGIDs SYS.ODCINumberList, > defaultMIDs SYS.ODCINumberList, > defaultModels MDSYS.RDF_Models, > nsp MDSYS.RDF_Aliases, > flag number, > str_out OUT MDSYS.RDF_longVarcharArray, > sig_out OUT MDSYS.RDF_varcharArray, > options varchar2, > vmViewName varchar2, > flag_out OUT number, > valIdCover_out OUT SYS.ODCINumberList, > orderBy_out OUT varchar2, > model_types SYS.ODCINumberList, > isRDFVModel number) > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.translateQueryPattern( > oracle.sql.ARRAY, > oracle.jdbc.OracleClob, > oracle.sql.ARRAY, > java.lang.String, > long, > java.lang.String, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > oracle.sql.ARRAY, > int, > oracle.sql.ARRAY[], > oracle.sql.ARRAY[], > java.lang.String, > java.lang.String, > int[], > oracle.sql.ARRAY[], > java.lang.String[], > oracle.sql.ARRAY, > int)'; > > FUNCTION ORACLE_ORARDF_SGC ( > query varchar2) > RETURN MDSYS.RDF_varcharArray > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.getPatternVariables( > java.lang.String) > return oracle.sql.STRUCT'; > > FUNCTION ORACLE_ORARDF_SGCCLOB ( > query clob) > RETURN MDSYS.RDF_varcharArray > IS > language java name > 'oracle.spatial.rdf.server.SQLEntryPoints.getPatternVariables( > oracle.jdbc.OracleClob) > return oracle.sql.STRUCT'; > > -------------------- End Jena Helper Functions --------------------------- >
26514a26515,26798 > > > > > > > PROCEDURE ORACLE_ORARDF_S2SGETSRC ( > QUERY VARCHAR2, > NSP MDSYS.RDF_ALIASES, > DEFAULTG_OUT OUT MDSYS.RDF_GRAPHS, > SIG_OUT OUT MDSYS.RDF_GRAPHS) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SGETSRC( > QUERY, > NSP, > DEFAULTG_OUT, > SIG_OUT); > END ORACLE_ORARDF_S2SGETSRC; > > PROCEDURE ORACLE_ORARDF_S2SGETSRCCLOB ( > QUERY CLOB, > NSP MDSYS.RDF_ALIASES, > DEFAULTG_OUT OUT MDSYS.RDF_GRAPHS, > SIG_OUT OUT MDSYS.RDF_GRAPHS) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SGETSRCCLOB( > QUERY, > NSP, > DEFAULTG_OUT, > SIG_OUT); > END ORACLE_ORARDF_S2SGETSRCCLOB; > > PROCEDURE ORACLE_ORARDF_S2SSVR ( > ATTRS SYS.ODCINUMBERLIST, > QUERY VARCHAR2, > MODELS MDSYS.RDF_MODELS, > PRECOMPIDX VARCHAR2, > IDXSTATUS VARCHAR2, > NSP MDSYS.RDF_ALIASES, > FLAG NUMBER, > STR_OUT OUT MDSYS.RDF_LONGVARCHARARRAY, > SIG_OUT OUT MDSYS.RDF_VARCHARARRAY, > OPTIONS VARCHAR2, > VMVIEWNAME VARCHAR2, > FLAG_OUT OUT NUMBER, > VALIDCOVER_OUT OUT SYS.ODCINUMBERLIST, > ORDERBY_OUT OUT VARCHAR2) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SSVR( > ATTRS, > QUERY, > MODELS, > PRECOMPIDX, > IDXSTATUS, > NSP, > FLAG, > STR_OUT, > SIG_OUT, > OPTIONS, > VMVIEWNAME, > FLAG_OUT, > VALIDCOVER_OUT, > ORDERBY_OUT); > END ORACLE_ORARDF_S2SSVR; > > PROCEDURE ORACLE_ORARDF_S2SSVRNG ( > ATTRS SYS.ODCINUMBERLIST, > QUERY VARCHAR2, > MODELS MDSYS.RDF_MODELS, > PRECOMPIDX VARCHAR2, > PRECOMPIDXID NUMBER, > IDXSTATUS VARCHAR2, > DEFAULTGIDS SYS.ODCINUMBERLIST, > NAMEDGIDS SYS.ODCINUMBERLIST, > DEFAULTMIDS SYS.ODCINUMBERLIST, > DEFAULTMODELS MDSYS.RDF_MODELS, > NSP MDSYS.RDF_ALIASES, > FLAG NUMBER, > STR_OUT OUT MDSYS.RDF_LONGVARCHARARRAY, > SIG_OUT OUT MDSYS.RDF_VARCHARARRAY, > OPTIONS VARCHAR2, > VMVIEWNAME VARCHAR2, > FLAG_OUT OUT NUMBER, > VALIDCOVER_OUT OUT SYS.ODCINUMBERLIST, > ORDERBY_OUT OUT VARCHAR2, > MODEL_TYPES SYS.ODCINUMBERLIST, > ISRDFVMODEL NUMBER, > NETWORKOWNER VARCHAR2, > NETWORKNAME VARCHAR2) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SSVRNG( > ATTRS, > QUERY, > MODELS, > PRECOMPIDX, > PRECOMPIDXID, > IDXSTATUS, > DEFAULTGIDS, > NAMEDGIDS, > DEFAULTMIDS, > DEFAULTMODELS, > NSP, > FLAG, > STR_OUT, > SIG_OUT, > OPTIONS, > VMVIEWNAME, > FLAG_OUT, > VALIDCOVER_OUT, > ORDERBY_OUT, > MODEL_TYPES, > ISRDFVMODEL, > NETWORKOWNER, > NETWORKNAME); > END ORACLE_ORARDF_S2SSVRNG; > > PROCEDURE ORACLE_ORARDF_S2SSVRNGCLOB ( > ATTRS SYS.ODCINUMBERLIST, > QUERY CLOB, > MODELS MDSYS.RDF_MODELS, > PRECOMPIDX VARCHAR2, > PRECOMPIDXID NUMBER, > IDXSTATUS VARCHAR2, > DEFAULTGIDS SYS.ODCINUMBERLIST, > NAMEDGIDS SYS.ODCINUMBERLIST, > DEFAULTMIDS SYS.ODCINUMBERLIST, > DEFAULTMODELS MDSYS.RDF_MODELS, > NSP MDSYS.RDF_ALIASES, > FLAG NUMBER, > STR_OUT OUT MDSYS.RDF_LONGVARCHARARRAY, > SIG_OUT OUT MDSYS.RDF_VARCHARARRAY, > OPTIONS VARCHAR2, > VMVIEWNAME VARCHAR2, > FLAG_OUT OUT NUMBER, > VALIDCOVER_OUT OUT SYS.ODCINUMBERLIST, > ORDERBY_OUT OUT VARCHAR2, > MODEL_TYPES SYS.ODCINUMBERLIST, > ISRDFVMODEL NUMBER, > NETWORKOWNER VARCHAR2, > NETWORKNAME VARCHAR2) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SSVRNGCLOB( > ATTRS, > QUERY, > MODELS, > PRECOMPIDX, > PRECOMPIDXID, > IDXSTATUS, > DEFAULTGIDS, > NAMEDGIDS, > DEFAULTMIDS, > DEFAULTMODELS, > NSP, > FLAG, > STR_OUT, > SIG_OUT, > OPTIONS, > VMVIEWNAME, > FLAG_OUT, > VALIDCOVER_OUT, > ORDERBY_OUT, > MODEL_TYPES, > ISRDFVMODEL, > NETWORKOWNER, > NETWORKNAME); > END ORACLE_ORARDF_S2SSVRNGCLOB; > > PROCEDURE ORACLE_ORARDF_S2SSVRNGNPV ( > ATTRS SYS.ODCINUMBERLIST, > QUERY VARCHAR2, > MODELS MDSYS.RDF_MODELS, > PRECOMPIDX VARCHAR2, > PRECOMPIDXID NUMBER, > IDXSTATUS VARCHAR2, > DEFAULTGIDS SYS.ODCINUMBERLIST, > NAMEDGIDS SYS.ODCINUMBERLIST, > DEFAULTMIDS SYS.ODCINUMBERLIST, > DEFAULTMODELS MDSYS.RDF_MODELS, > NSP MDSYS.RDF_ALIASES, > FLAG NUMBER, > STR_OUT OUT MDSYS.RDF_LONGVARCHARARRAY, > SIG_OUT OUT MDSYS.RDF_VARCHARARRAY, > OPTIONS VARCHAR2, > VMVIEWNAME VARCHAR2, > FLAG_OUT OUT NUMBER, > VALIDCOVER_OUT OUT SYS.ODCINUMBERLIST, > ORDERBY_OUT OUT VARCHAR2, > MODEL_TYPES SYS.ODCINUMBERLIST, > ISRDFVMODEL NUMBER) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SSVRNGNPV( > ATTRS, > QUERY, > MODELS, > PRECOMPIDX, > PRECOMPIDXID, > IDXSTATUS, > DEFAULTGIDS, > NAMEDGIDS, > DEFAULTMIDS, > DEFAULTMODELS, > NSP, > FLAG, > STR_OUT, > SIG_OUT, > OPTIONS, > VMVIEWNAME, > FLAG_OUT, > VALIDCOVER_OUT, > ORDERBY_OUT, > MODEL_TYPES, > ISRDFVMODEL); > END ORACLE_ORARDF_S2SSVRNGNPV; > > PROCEDURE ORACLE_ORARDF_S2SSVRNGCLOBNPV ( > ATTRS SYS.ODCINUMBERLIST, > QUERY CLOB, > MODELS MDSYS.RDF_MODELS, > PRECOMPIDX VARCHAR2, > PRECOMPIDXID NUMBER, > IDXSTATUS VARCHAR2, > DEFAULTGIDS SYS.ODCINUMBERLIST, > NAMEDGIDS SYS.ODCINUMBERLIST, > DEFAULTMIDS SYS.ODCINUMBERLIST, > DEFAULTMODELS MDSYS.RDF_MODELS, > NSP MDSYS.RDF_ALIASES, > FLAG NUMBER, > STR_OUT OUT MDSYS.RDF_LONGVARCHARARRAY, > SIG_OUT OUT MDSYS.RDF_VARCHARARRAY, > OPTIONS VARCHAR2, > VMVIEWNAME VARCHAR2, > FLAG_OUT OUT NUMBER, > VALIDCOVER_OUT OUT SYS.ODCINUMBERLIST, > ORDERBY_OUT OUT VARCHAR2, > MODEL_TYPES SYS.ODCINUMBERLIST, > ISRDFVMODEL NUMBER) > AS > BEGIN > SDO_RDF_JAVA_STP.ORACLE_ORARDF_S2SSVRNGCLOBNPV( > ATTRS, > QUERY, > MODELS, > PRECOMPIDX, > PRECOMPIDXID, > IDXSTATUS, > DEFAULTGIDS, > NAMEDGIDS, > DEFAULTMIDS, > DEFAULTMODELS, > NSP, > FLAG, > STR_OUT, > SIG_OUT, > OPTIONS, > VMVIEWNAME, > FLAG_OUT, > VALIDCOVER_OUT, > ORDERBY_OUT, > MODEL_TYPES, > ISRDFVMODEL); > END ORACLE_ORARDF_S2SSVRNGCLOBNPV; > > FUNCTION ORACLE_ORARDF_SGC (QUERY VARCHAR2) > RETURN MDSYS.RDF_VARCHARARRAY > AS > BEGIN > RETURN SDO_RDF_JAVA_STP.ORACLE_ORARDF_SGC(QUERY); > END ORACLE_ORARDF_SGC; > > FUNCTION ORACLE_ORARDF_SGCCLOB (QUERY CLOB) > RETURN MDSYS.RDF_VARCHARARRAY > AS > BEGIN > RETURN SDO_RDF_JAVA_STP.ORACLE_ORARDF_SGCCLOB(QUERY); > END ORACLE_ORARDF_SGCCLOB; > > >
1c1
< PACKAGE BODY sdo_tpidx AS
---
> PACKAGE BODY sdo_tpidx AS
3,4c3,4
< INVALID_TG_LAYER_ID EXCEPTION;
< INVALID_TG_LAYER_GTYPE EXCEPTION;
---
> INVALID_TG_LAYER_ID exception;
> INVALID_TG_LAYER_GTYPE exception;
6,27c6,33
< FUNCTION INDEX_UPDATE (IA SYS.ODCIINDEXINFO, RID VARCHAR2,
< OLDVAL MDSYS.SDO_TOPO_GEOMETRY,
< NEWVAL MDSYS.SDO_TOPO_GEOMETRY,
< ENV SYS.ODCIENV) RETURN NUMBER IS
< RETVAL NUMBER;
< STMT VARCHAR2(1000);
< UPD_STMT VARCHAR2(1000);
< CNT NUMBER;
< TOPOLOGY VARCHAR2(130);
< TOPOLOGY_IN VARCHAR2(130);
< TYPE CURSOR_TYPE IS REF CURSOR;
< QUERY_CRS CURSOR_TYPE ;
< P_TGL_ID NUMBER;
< LAYER_LEVEL NUMBER;
< STMT_N VARCHAR2(200);
< STMT_E VARCHAR2(200);
< STMT_F VARCHAR2(200);
< ID NUMBER;
< WS VARCHAR2(130);
< ISVERSIONED NUMBER;
< BEGIN
<
---
> FUNCTION Index_Update (ia sys.odciindexinfo, rid varchar2,
> oldval mdsys.sdo_topo_geometry,
> newval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv) return number is
> retval number;
> stmt varchar2(1000);
> upd_stmt varchar2(1000);
> cnt NUMBER;
> topology varchar2(130);
> topology_in varchar2(130);
> type cursor_type is REF CURSOR;
> query_crs cursor_type ;
> p_tgl_id number;
> layer_level number;
> stmt_n varchar2(200);
> stmt_e varchar2(200);
> stmt_f varchar2(200);
> id number;
> WS varchar2(130);
> isVersioned number;
> begin
> /* In the relation table, copy over the old values to the new
> topo_geometry if there are records.
> 1. Delete for the old tg_id those records that are set with a 'D'
> for the new tg_id.
> 2. Delete the records with a 'D' for the new tg_id.
> 2. Copy the rows from the old tg_id to the new tg_id.
> */
28a35,805
> IF ( (newval is NOT NULL) AND (oldval is not NULL) ) THEN
> stmt := ' SELECT distinct topology from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :id ';
> EXECUTE IMMEDIATE stmt into topology_in USING newval.topology_id;
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
> isVersioned := sdo_tpidx.isversioned(topology);
>
> /* first cleanup the higher level layers so that they point to the
> new tg_id in the relation$ table.
> for each parent layer with current layer as the child layer
> update the relation$
> */
>
> stmt := ' select TG_LAYER_ID from mdsys.user_sdo_topo_metadata '||
> ' where topology_id = :id and CHILD_LAYER_ID = :chlid';
> OPEN query_crs FOR stmt using newval.topology_id,
> abs(newval.tg_layer_id);
> LOOP
> BEGIN
> FETCH query_crs INTO p_tgl_id;
> EXIT when query_crs%NOTFOUND ;
> upd_stmt := ' update '||topology||'_RELATION$ ' ||
> ' set topo_type = :tgid '||
> ' WHERE tg_layer_id = :ptglid '||
> ' and topo_type = :tgid ';
> EXECUTE immediate upd_stmt
> USING newval.tg_id, p_tgl_id, oldval.tg_id;
> END;
> END LOOP ;
> CLOSE query_crs ;
>
>
> /* lock the old rows from the primitive tables, if the tg_layer_id
> is a leaf level layer */
> EXECUTE IMMEDIATE
> ' SELECT TG_LAYER_LEVEL from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :tid and tg_layer_id = abs(:tglid) '
> into layer_level using newval.topology_id, newval.tg_layer_id;
>
> if ( newval.tg_layer_id < 0) then
> layer_level := 0;
> end if;
>
> IF (layer_level = 0) then
>
> stmt_n := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 1 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
> stmt_e := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 2 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
> stmt_f := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 3 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt := ' select node_id from '||topology||'_NODE$' ||
> ' where node_id in ( ' ||stmt_n|| ') for update ';
>
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
> LOOP
> BEGIN
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
> IF (WS <> 'LIVE') THEN
> EXECUTE IMMEDIATE
> 'begin DBMS_WM.LockRows(:ws, :tab, :qry); end; '
> USING WS, topology||'_NODE$', 'node_id = '||sdo_util.number_to_char(id) ;
> END IF;
> END IF;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select edge_id from '||topology||'_EDGE$' ||
> ' where edge_id in ( ' ||stmt_e|| ') for update ';
>
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
> LOOP
> BEGIN
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
> IF (WS <> 'LIVE') THEN
> EXECUTE IMMEDIATE
> ' begin DBMS_WM.LockRows(:ws, :tab, :qry); end; '
> USING WS, topology||'_EDGE$', 'edge_id = '||sdo_util.number_to_char(id) ;
> END IF;
> END IF;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select face_id from '||topology||'_FACE$' ||
> ' where face_id in ( ' ||stmt_f|| ') for update ';
>
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
> LOOP
> BEGIN
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
> IF (WS <> 'LIVE') THEN
> EXECUTE IMMEDIATE
> ' begin DBMS_WM.LockRows(:ws, :tab, :qry); end; '
> USING WS, topology||'_FACE$', 'face_id = '||sdo_util.number_to_char(id);
> END IF;
> END IF;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> end if;
>
> /* delete rows from the old tg_id corresponding to rows set to 'D' for
> new tg_id */
> stmt := ' DELETE FROM '||topology||'_RELATION$ ' ||
> ' WHERE (tg_layer_id, tg_id, topo_id, topo_type) IN '||
> ' ( SELECT tg_layer_id, '||sdo_util.number_to_char(oldval.tg_id)||', '||
> ' topo_id, topo_type FROM MDSYS.SDO_TOPO_RELATION_DATA '||
> ' WHERE tg_layer_id = :tg_l_id AND tg_id = :n_tg_id '||
> ' AND topo_attribute = ''D'' ) ';
> EXECUTE IMMEDIATE stmt using newval.tg_layer_id, newval.tg_id;
>
> /* if there are rows to append from the old tg_id, do it here */
> /* and do this only if the tg_id is different from the old value */
>
> if (newval.tg_id <> oldval.tg_id) then
> stmt := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id and tg_id = :n_tg_id '||
> ' AND topo_attribute = ''A'' ';
> EXECUTE IMMEDIATE stmt into cnt using newval.TG_LAYER_ID, newval.TG_ID;
>
> IF (cnt = 1) THEN /* we need to copy the rows from oldval to newval */
> stmt := ' INSERT INTO '||topology||'_RELATION$ ' ||
> ' SELECT tg_layer_id, '||sdo_util.number_to_char(newval.tg_id)||', '||
> ' topo_id, topo_type, topo_attribute '||
> ' FROM '||topology||'_RELATION$ '||
> ' WHERE tg_layer_id = :tg_l_id and tg_id = :o_tg_id ';
> EXECUTE IMMEDIATE stmt USING
> oldval.tg_layer_id, oldval.tg_id;
> END IF;
> stmt := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id and tg_id = :n_tg_id ';
> EXECUTE IMMEDIATE stmt into cnt using newval.TG_LAYER_ID, newval.TG_ID;
> IF (cnt = 0) THEN /* Error: bug 4681927 */
> mderr.raise_md_error('MD','SDO',-13122);
> END IF;
> end if;
>
> /* now cleanup the rows with 'A' and 'D' values for the topo_attribute */
> stmt := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id AND tg_id = :n_tg_id '||
> ' AND (topo_attribute = ''A'' OR topo_attribute = ''D'') ';
> EXECUTE IMMEDIATE stmt using newval.TG_LAYER_ID, newval.TG_ID;
> END IF;
>
> /* remove the dummy entries in MDSYS.SDO_TOPO_RELATION_DATA
> for this special case */
> if ( (oldval is NULL) AND (newval is not NULL) ) then
> /* now cleanup the rows with 'A' and 'D' values for the topo_attribute */
> stmt := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id AND tg_id = :n_tg_id '||
> ' AND (topo_attribute = ''A'' OR topo_attribute = ''D'') ';
> EXECUTE IMMEDIATE stmt using newval.TG_LAYER_ID, newval.TG_ID;
> end if;
>
> if ( (newval is not NULL) AND (oldval is not NULL) AND
> (oldval.tg_id = newval.tg_id) ) then
> retval := sdo_tpidx.index_delete(ia, null, oldval, env);
> retval := sdo_tpidx.index_insert(ia, null, newval, env);
> else
> retval := sdo_tpidx.index_delete(ia, rid, oldval, env);
> retval := sdo_tpidx.index_insert(ia, rid, newval, env);
> end if;
> return retval;
> end;
>
> -----------------------------index_insert------------------------------------
> ---
> --- BUGS:
> --- internal: 02/27/04, add the collection type dealing
> ---
> FUNCTION index_insert (ia sys.odciindexinfo, rid varchar2,
> newval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv)
> RETURN NUMBER IS
> stmt varchar2(1000);
> stmt1 varchar2(1000);
> table_name varchar2(260);
> column_name varchar2(130);
> topology varchar2(130);
> topology_in varchar2(130);
> topology_id number;
> feature_L_id number;
> feature_type number;
> feature_id number;
> idx_columns SYS.ODCIColInfoList;
> cnt number;
> layer_gtype varchar2(32);
> idx_tab varchar2(260);
> BEGIN
>
> IF (newval is NULL) THEN
> return SYS.ODCIConst.Success;
> END IF;
>
> idx_columns := ia.IndexCols;
> table_name := idx_columns(1).TableName;
> column_name := idx_columns(1).ColName;
> column_name := REPLACE(column_name, '"');
> topology_id := newval.topology_id;
> feature_L_id := newval.tg_layer_id;
> feature_id := newval.tg_id;
>
> BEGIN
> IF (feature_L_id IS NULL) THEN
> mderr.raise_md_error('MD', 'SDO', -13113);
> RETURN SYS.ODCIConst.Error;
> END IF;
>
> -- check the layer_id consistency
> topology_in := NULL;
>
> stmt := 'select topology from mdsys.user_sdo_topo_info where owner = :owner ' ||
> ' AND topology_id = :topo_id AND table_name = :tab ' ||
> ' AND column_name = :col AND TG_Layer_ID = :flid';
> BEGIN
> EXECUTE IMMEDIATE stmt INTO topology_in
> USING ia.IndexSchema, topology_id,table_name,
> column_name, abs(feature_L_id);
> EXCEPTION
> WHEN OTHERS THEN
> mderr.raise_md_error('MD', 'SDO', -13113);
> RETURN SYS.ODCIConst.Error;
> RAISE;
> END;
>
> IF (topology_in IS NULL) THEN
> mderr.raise_md_error('MD', 'SDO', -13261, stmt);
> raise INVALID_TG_LAYER_ID;
> END IF;
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
>
> -- check the feature type consistency
> stmt := ' select SDO_LAYER_GTYPE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ';
> EXECUTE IMMEDIATE stmt INTO layer_gtype USING ia.IndexSchema, ia.IndexName;
>
> IF (layer_gtype = 'POLYGON' ) THEN
> IF (newval.tg_type <> 3) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'LINE' OR layer_gtype = 'CURVE' ) THEN
> IF (newval.tg_type <> 2) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'POINT' ) THEN
> IF (newval.tg_type <> 1) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'COLLECTION') THEN
> IF ((newval.tg_type < 1) OR
> (newval.tg_type > 4)) THEN
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> END IF;
>
> /* insert into the relation$ table */
> stmt := ' INSERT INTO '||topology||'_RELATION$ '||
> ' SELECT * from MDSYS.SDO_TOPO_RELATION_DATA A ' ||
> ' WHERE A.tg_layer_id = :flid and A.tg_id = :fid ';
> EXECUTE immediate stmt USING feature_L_id, feature_id;
>
> -- PARTITION OR NON PARTITION CASE
> IF (ia.IndexPartition IS NULL ) THEN
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ';
> EXECUTE IMMEDIATE stmt into idx_tab using ia.IndexSchema, ia.IndexName;
> ELSE
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = ' ||
> ' :iname AND SDO_INDEX_PARTITION = :indpart ';
>
> EXECUTE IMMEDIATE stmt INTO idx_tab USING
> ia.IndexSchema, ia.IndexName, ia.IndexPartition;
> END IF;
>
>
> -- insert into the index table
> /* do this only if rid is not NULL */
> IF (rid is not NULL) THEN
> idx_tab := ia.IndexSchema||'.'||idx_tab;
> stmt := ' INSERT INTO ' ||
> SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(idx_tab) ||
> ' values (:fid, :rid) ';
> EXECUTE IMMEDIATE stmt USING feature_id, rid;
> END IF;
>
> stmt := ' DELETE from MDSYS.SDO_TOPO_RELATION_DATA A ' ||
> ' WHERE A.tg_layer_id = :flid and A.tg_id = :fid ';
> EXECUTE immediate stmt USING feature_L_id, feature_id;
>
> EXCEPTION
> WHEN INVALID_TG_LAYER_GTYPE THEN
> dbms_output.put_line(sdo_util.number_to_char(feature_L_id));
> mderr.raise_md_error('MD', 'SDO', -13121, SYS.DBMS_ASSERT.noop(stmt));
> RETURN SYS.ODCIConst.Error;
> RAISE;
>
> WHEN INVALID_TG_LAYER_ID THEN
> stmt1 := sdo_util.number_to_char(cnt) || '::'||ia.IndexSchema||'::'||topology||
> '::'||table_name||'::'||column_name;
> mderr.raise_md_error('MD', 'SDO', -13113, SYS.DBMS_ASSERT.noop(stmt1));
> RETURN SYS.ODCIConst.Error;
> RAISE;
> END;
> RETURN SYS.ODCIConst.Success;
> END;
>
> FUNCTION index_delete (ia sys.odciindexinfo, rid varchar2,
> oldval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv)
> RETURN NUMBER IS
> stmt varchar2(1000);
> q_stmt varchar2(1000);
> topology varchar2(21);
> topology_in varchar2(21);
> topology_id number;
> feature_L_id number;
> feature_id number;
> idx_tab varchar2(260);
> type cursor_type is REF CURSOR;
> query_crs cursor_type ;
> p_tgl_id number;
> cnt number;
> layer_level number;
> id number;
> stmt_n varchar2(200);
> stmt_e varchar2(200);
> stmt_f varchar2(200);
> WS varchar2(130);
> old_sp varchar2(128);
> old_ws varchar2(128);
> parent_sp varchar2(128) ;
> parent_ws varchar2(128) ;
> isVersioned number;
> idx_columns SYS.ODCIColInfoList;
> table_name varchar2(130);
> ver_status varchar2(10);
>
> BEGIN
>
> IF (oldval IS NULL) THEN
> RETURN SYS.ODCIConst.Success;
> END IF;
>
> topology_id := oldval.topology_id;
> feature_L_id := oldval.tg_layer_id;
> feature_id := oldval.tg_id;
>
> stmt := ' select topology from mdsys.user_sdo_topo_info where ' ||
> ' topology_id = : topo_id and tg_layer_id = :flid ';
> EXECUTE IMMEDIATE stmt INTO topology_in USING topology_id, abs(feature_L_id);
>
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
> /* lock the old rows from the primitive tables, if the tg_layer_id
> is a leaf level layer */
> EXECUTE IMMEDIATE
> ' SELECT TG_LAYER_LEVEL from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :tid and tg_layer_id = abs(:tglid) '
> INTO layer_level USING topology_id, feature_l_id;
>
> IF ( feature_l_id < 0) THEN
> layer_level := 0;
> END IF;
>
> IF (layer_level = 0) THEN
>
> stmt_n := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 1 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt_e := ' select abs(topo_id) from '||topology||'_RELATION$ '||
> ' where topo_type = 2 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt_f := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 3 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt := ' select node_id from '||topology||'_NODE$' ||
> ' where node_id in ( ' ||stmt_n|| ') for update ';
>
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
> LOOP
> BEGIN
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select edge_id from '||topology||'_EDGE$' ||
> ' where edge_id in ( ' ||stmt_e|| ') for update ';
>
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
> LOOP
> BEGIN
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select face_id from '||topology||'_FACE$' ||
> ' where face_id in ( ' ||stmt_f|| ') for update ';
>
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
> LOOP
> BEGIN
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> END IF;
>
> -- delete from the <>_Relation$ table the rows for feature
> -- do this only if this is not a row migration case
> IF ( ( (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> = SYS.ODCIConst.RowMigration) AND
> (bitand( env.EnvFlags, SYS.ODCIConst.IndexKeyChanged)
> = SYS.ODCIConst.IndexKeyChanged) ) OR
> (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> <> SYS.ODCIConst.RowMigration) ) THEN
> IF (rid is not NULL) THEN
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid ';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> END IF;
> END IF;
>
> -- PARTITION OR NON PARTITION CASE
> IF (ia.IndexPartition IS NULL ) THEN
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ';
>
> EXECUTE IMMEDIATE stmt INTO idx_tab USING ia.IndexSchema, ia.IndexName;
> ELSE
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ' ||
> ' AND SDO_INDEX_PARTITION = :indpart ';
>
> EXECUTE IMMEDIATE stmt INTO idx_tab USING
> ia.IndexSchema, ia.IndexName, ia.IndexPartition;
> END IF;
>
> /* see if this tg_is is referred to by any other layer in the relation
> table for each parent layer that has this layer as the child layer
> count the rows in relation tables pointing to this tg_id
> if count > 0 then this violates the hierarchical constraint */
> -- do this only if this is not a row migration case
> IF ( ( (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> = SYS.ODCIConst.RowMigration) AND
> (bitand( env.EnvFlags, SYS.ODCIConst.IndexKeyChanged)
> = SYS.ODCIConst.IndexKeyChanged) ) OR
> (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> <> SYS.ODCIConst.RowMigration) ) THEN
>
> IF (rid IS NOT NULL) THEN
> EXECUTE IMMEDIATE
> 'select /*+ ordered use_nl (b,a) index ' ||
> '(a '||topology||'_REL_LID$ ) */ count(*) ' ||
> 'from mdsys.user_sdo_topo_info b, ' || topology || '_RELATION$ a ' ||
> 'WHERE b.topology_id = :id ' ||
> 'AND b.child_layer_id = :chlid ' ||
> 'AND b.tg_layer_id = a.tg_layer_id ' ||
> 'AND a.topo_type = :tgid AND rownum < 2'
> INTO cnt USING oldval.topology_id, abs(oldval.tg_layer_id), oldval.tg_id;
>
> IF (cnt > 0) THEN
> BEGIN
> /* this is hierarchical case */
> /* setup the variables for WM check bug 9206217*/
> isVersioned := 0;
> ver_status := NULL;
> idx_columns := ia.IndexCols;
> table_name := idx_columns(1).TableName;
> table_name := substr(table_name, 1, length(table_name)-3);
>
> EXECUTE IMMEDIATE 'select count(*)' ||
> ' from wmsys.ALL_WM_VERSIONED_TABLES' ||
> ' where owner = :1 and table_name = :2'
> INTO isVersioned
> USING idx_columns(1).tableschema, table_name;
>
> IF (isVersioned > 0) THEN
> BEGIN
> EXECUTE IMMEDIATE 'select state' ||
> ' from wmsys.ALL_WM_VERSIONED_TABLES' ||
> ' where owner = :1 and table_name = :2'
> INTO ver_status USING idx_columns(1).tableschema, table_name;
>
> /* need more checks if this is version enabled topology */
> EXECUTE IMMEDIATE
> 'select nvl(sys_context(''lt_ctx'', ''savepoint_name''),' ||
> ' ''LATEST'') from SYS.DUAL '
> INTO old_sp;
>
> EXECUTE IMMEDIATE
> 'select wmsys.lt.getworkspace from SYS.DUAL' INTO old_ws;
>
> EXECUTE IMMEDIATE
> 'select parent_workspace, parent_savepoint' ||
> ' from wmsys.all_workspaces' ||
> ' where workspace = dbms_wm.getworkspace '
> INTO parent_ws, parent_sp;
>
> IF (parent_sp IS NOT NULL) THEN
> EXECUTE IMMEDIATE 'declare begin ' ||
> 'dbms_wm.gotoworkspace(:parent_workspace); ' ||
> 'dbms_wm.gotosavepoint(:parent_savepoint); end; '
> USING parent_ws, parent_sp;
> END IF;
>
> cnt := -1;
> EXECUTE IMMEDIATE 'select count(*) from ' || topology ||
> '_RELATION$ where tg_layer_id = :tglid and tg_id = :tgid'
> INTO cnt USING abs(feature_L_id), feature_id;
>
> EXECUTE IMMEDIATE 'declare begin ' ||
> 'dbms_wm.gotoworkspace(:old_ws); end; '
> USING old_ws;
>
> IF (old_sp <> 'LATEST') THEN
> EXECUTE IMMEDIATE 'declare begin ' ||
> 'dbms_wm.gotosavepoint(:old_sp); end; '
> USING old_sp;
> END IF;
>
> IF ( (cnt = 0) AND (ver_status <> 'DV') ) THEN
> mderr.raise_md_error('MD', 'SDO', -13199,
> 'Cannot delete a TG object with dependent parent objects');
> RETURN SYS.ODCIConst.Error;
> END IF;
> END;
> ELSE
> BEGIN
> mderr.raise_md_error('MD', 'SDO', -13199,
> 'Cannot delete a TG object with dependent parent objects');
> RETURN SYS.ODCIConst.Error;
> END;
> END IF; /* isVersioned */
> END;
> END IF; /* cnt > 0 */
> END IF; /* RID is not NULL */
> END IF;
>
> -- delete from the index table
> IF (rid is not NULL) THEN
> idx_tab := ia.IndexSchema||'.'||idx_tab;
> stmt := 'DELETE '|| SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(idx_tab) ||
> ' WHERE SDO_TG_ID = :fid' ||
> ' AND sdo_rowid = :rid';
> EXECUTE IMMEDIATE stmt USING feature_id, rid;
> END IF;
>
> RETURN SYS.ODCIConst.Success;
> END;
>
> FUNCTION isversioned(topology IN VARCHAR2) return integer IS
> topo_name varchar2(130);
> owner varchar2(130);
> stmt varchar2(200);
> versionedTopology integer;
> owmInstalled integer;
> BEGIN
> mdsys.SDO_TOPO_METADATA.extract_topo_owner(
> nls_upper(SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(topology)), owner,topo_name);
> versionedTopology := 0;
>
> SELECT MDSYS.SDO_OWM_INSTALLED INTO owmInstalled FROM SYS.DUAL;
>
> IF ( owmInstalled > 0 ) THEN
> stmt := ' select count(*) ' ||
> ' from wmsys.ALL_WM_VERSIONED_TABLES ' ||
> ' where owner = :1 and table_name = :2';
> EXECUTE IMMEDIATE stmt INTO versionedTopology
> USING owner, SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(topo_name) || '_NODE$';
> END IF;
>
> RETURN versionedTopology;
> END;
>
> END sdo_tpidx;
>
> PACKAGE BODY sdo_tpidx AS
>
> INVALID_TG_LAYER_ID exception;
> INVALID_TG_LAYER_GTYPE exception;
>
> FUNCTION Index_Update (ia sys.odciindexinfo, rid varchar2,
> oldval mdsys.sdo_topo_geometry,
> newval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv) return number is
> retval number;
> stmt varchar2(1000);
> upd_stmt varchar2(1000);
> cnt NUMBER;
> topology varchar2(130);
> topology_in varchar2(130);
> type cursor_type is REF CURSOR;
> query_crs cursor_type ;
> p_tgl_id number;
> layer_level number;
> stmt_n varchar2(200);
> stmt_e varchar2(200);
> stmt_f varchar2(200);
> id number;
> WS varchar2(130);
> isVersioned number;
> begin
> /* In the relation table, copy over the old values to the new
> topo_geometry if there are records.
> 1. Delete for the old tg_id those records that are set with a 'D'
> for the new tg_id.
> 2. Delete the records with a 'D' for the new tg_id.
> 2. Copy the rows from the old tg_id to the new tg_id.
> */
>
> IF ( (newval is NOT NULL) AND (oldval is not NULL) ) THEN
> stmt := ' SELECT distinct topology from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :id ';
> EXECUTE IMMEDIATE stmt into topology_in USING newval.topology_id;
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
> isVersioned := sdo_tpidx.isversioned(topology);
>
> /* first cleanup the higher level layers so that they point to the
> new tg_id in the relation$ table.
> for each parent layer with current layer as the child layer
> update the relation$
> */
>
> stmt := ' select TG_LAYER_ID from mdsys.user_sdo_topo_metadata '||
> ' where topology_id = :id and CHILD_LAYER_ID = :chlid';
> OPEN query_crs FOR stmt using newval.topology_id,
> abs(newval.tg_layer_id);
> LOOP
> BEGIN
> FETCH query_crs INTO p_tgl_id;
> EXIT when query_crs%NOTFOUND ;
> upd_stmt := ' update '||topology||'_RELATION$ ' ||
> ' set topo_type = :tgid '||
> ' WHERE tg_layer_id = :ptglid '||
> ' and topo_type = :tgid ';
> EXECUTE immediate upd_stmt
> USING newval.tg_id, p_tgl_id, oldval.tg_id;
> END;
> END LOOP ;
> CLOSE query_crs ;
>
>
> /* lock the old rows from the primitive tables, if the tg_layer_id
> is a leaf level layer */
> EXECUTE IMMEDIATE
> ' SELECT TG_LAYER_LEVEL from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :tid and tg_layer_id = abs(:tglid) '
> into layer_level using newval.topology_id, newval.tg_layer_id;
>
> if ( newval.tg_layer_id < 0) then
> layer_level := 0;
> end if;
>
> IF (layer_level = 0) then
>
> stmt_n := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 1 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
> stmt_e := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 2 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
> stmt_f := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 3 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt := ' select node_id from '||topology||'_NODE$' ||
> ' where node_id in ( ' ||stmt_n|| ') for update ';
>
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
> LOOP
> BEGIN
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
> IF (WS <> 'LIVE') THEN
> EXECUTE IMMEDIATE
> 'begin DBMS_WM.LockRows(:ws, :tab, :qry); end; '
> USING WS, topology||'_NODE$', 'node_id = '||sdo_util.number_to_char(id) ;
> END IF;
> END IF;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select edge_id from '||topology||'_EDGE$' ||
> ' where edge_id in ( ' ||stmt_e|| ') for update ';
>
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
> LOOP
> BEGIN
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
> IF (WS <> 'LIVE') THEN
> EXECUTE IMMEDIATE
> ' begin DBMS_WM.LockRows(:ws, :tab, :qry); end; '
> USING WS, topology||'_EDGE$', 'edge_id = '||sdo_util.number_to_char(id) ;
> END IF;
> END IF;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select face_id from '||topology||'_FACE$' ||
> ' where face_id in ( ' ||stmt_f|| ') for update ';
>
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
> LOOP
> BEGIN
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
> IF (WS <> 'LIVE') THEN
> EXECUTE IMMEDIATE
> ' begin DBMS_WM.LockRows(:ws, :tab, :qry); end; '
> USING WS, topology||'_FACE$', 'face_id = '||sdo_util.number_to_char(id);
> END IF;
> END IF;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
29a807,817
> end if;
>
> /* delete rows from the old tg_id corresponding to rows set to 'D' for
> new tg_id */
> stmt := ' DELETE FROM '||topology||'_RELATION$ ' ||
> ' WHERE (tg_layer_id, tg_id, topo_id, topo_type) IN '||
> ' ( SELECT tg_layer_id, '||sdo_util.number_to_char(oldval.tg_id)||', '||
> ' topo_id, topo_type FROM MDSYS.SDO_TOPO_RELATION_DATA '||
> ' WHERE tg_layer_id = :tg_l_id AND tg_id = :n_tg_id '||
> ' AND topo_attribute = ''D'' ) ';
> EXECUTE IMMEDIATE stmt using newval.tg_layer_id, newval.tg_id;
30a819,820
> /* if there are rows to append from the old tg_id, do it here */
> /* and do this only if the tg_id is different from the old value */
31a822,826
> if (newval.tg_id <> oldval.tg_id) then
> stmt := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id and tg_id = :n_tg_id '||
> ' AND topo_attribute = ''A'' ';
> EXECUTE IMMEDIATE stmt into cnt using newval.TG_LAYER_ID, newval.TG_ID;
32a828,843
> IF (cnt = 1) THEN /* we need to copy the rows from oldval to newval */
> stmt := ' INSERT INTO '||topology||'_RELATION$ ' ||
> ' SELECT tg_layer_id, '||sdo_util.number_to_char(newval.tg_id)||', '||
> ' topo_id, topo_type, topo_attribute '||
> ' FROM '||topology||'_RELATION$ '||
> ' WHERE tg_layer_id = :tg_l_id and tg_id = :o_tg_id ';
> EXECUTE IMMEDIATE stmt USING
> oldval.tg_layer_id, oldval.tg_id;
> END IF;
> stmt := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id and tg_id = :n_tg_id ';
> EXECUTE IMMEDIATE stmt into cnt using newval.TG_LAYER_ID, newval.TG_ID;
> IF (cnt = 0) THEN /* Error: bug 4681927 */
> mderr.raise_md_error('MD','SDO',-13122);
> END IF;
> end if;
33a845,850
> /* now cleanup the rows with 'A' and 'D' values for the topo_attribute */
> stmt := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id AND tg_id = :n_tg_id '||
> ' AND (topo_attribute = ''A'' OR topo_attribute = ''D'') ';
> EXECUTE IMMEDIATE stmt using newval.TG_LAYER_ID, newval.TG_ID;
> END IF;
35,38c852,1130
< IF ( (NEWVAL IS NOT NULL) AND (OLDVAL IS NOT NULL) ) THEN
< STMT := ' SELECT distinct topology from mdsys.user_sdo_topo_metadata ' ||
< ' WHERE topology_id = :id ';
< EXECUTE IMMEDIATE STMT INTO TOPOLOGY_IN USING NEWVAL.TOPOLOGY_ID;
---
> /* remove the dummy entries in MDSYS.SDO_TOPO_RELATION_DATA
> for this special case */
> if ( (oldval is NULL) AND (newval is not NULL) ) then
> /* now cleanup the rows with 'A' and 'D' values for the topo_attribute */
> stmt := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
> ' WHERE tg_layer_id = :tg_l_id AND tg_id = :n_tg_id '||
> ' AND (topo_attribute = ''A'' OR topo_attribute = ''D'') ';
> EXECUTE IMMEDIATE stmt using newval.TG_LAYER_ID, newval.TG_ID;
> end if;
>
> if ( (newval is not NULL) AND (oldval is not NULL) AND
> (oldval.tg_id = newval.tg_id) ) then
> retval := sdo_tpidx.index_delete(ia, null, oldval, env);
> retval := sdo_tpidx.index_insert(ia, null, newval, env);
> else
> retval := sdo_tpidx.index_delete(ia, rid, oldval, env);
> retval := sdo_tpidx.index_insert(ia, rid, newval, env);
> end if;
> return retval;
> end;
>
> -----------------------------index_insert------------------------------------
> ---
> --- BUGS:
> --- internal: 02/27/04, add the collection type dealing
> ---
> FUNCTION index_insert (ia sys.odciindexinfo, rid varchar2,
> newval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv)
> RETURN NUMBER IS
> stmt varchar2(1000);
> stmt1 varchar2(1000);
> table_name varchar2(260);
> column_name varchar2(130);
> topology varchar2(130);
> topology_in varchar2(130);
> topology_id number;
> feature_L_id number;
> feature_type number;
> feature_id number;
> idx_columns SYS.ODCIColInfoList;
> cnt number;
> layer_gtype varchar2(32);
> idx_tab varchar2(260);
> BEGIN
>
> IF (newval is NULL) THEN
> return SYS.ODCIConst.Success;
> END IF;
>
> idx_columns := ia.IndexCols;
> table_name := idx_columns(1).TableName;
> column_name := idx_columns(1).ColName;
> column_name := REPLACE(column_name, '"');
> topology_id := newval.topology_id;
> feature_L_id := newval.tg_layer_id;
> feature_id := newval.tg_id;
>
> BEGIN
> IF (feature_L_id IS NULL) THEN
> mderr.raise_md_error('MD', 'SDO', -13113);
> RETURN SYS.ODCIConst.Error;
> END IF;
>
> -- check the layer_id consistency
> topology_in := NULL;
>
> stmt := 'select topology from mdsys.user_sdo_topo_info where owner = :owner ' ||
> ' AND topology_id = :topo_id AND table_name = :tab ' ||
> ' AND column_name = :col AND TG_Layer_ID = :flid';
> BEGIN
> EXECUTE IMMEDIATE stmt INTO topology_in
> USING ia.IndexSchema, topology_id,table_name,
> column_name, abs(feature_L_id);
> EXCEPTION
> WHEN OTHERS THEN
> mderr.raise_md_error('MD', 'SDO', -13113);
> RETURN SYS.ODCIConst.Error;
> RAISE;
> END;
>
> IF (topology_in IS NULL) THEN
> mderr.raise_md_error('MD', 'SDO', -13261, stmt);
> raise INVALID_TG_LAYER_ID;
> END IF;
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
>
> -- check the feature type consistency
> stmt := ' select SDO_LAYER_GTYPE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ';
> EXECUTE IMMEDIATE stmt INTO layer_gtype USING ia.IndexSchema, ia.IndexName;
>
> IF (layer_gtype = 'POLYGON' ) THEN
> IF (newval.tg_type <> 3) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'LINE' OR layer_gtype = 'CURVE' ) THEN
> IF (newval.tg_type <> 2) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'POINT' ) THEN
> IF (newval.tg_type <> 1) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'COLLECTION') THEN
> IF ((newval.tg_type < 1) OR
> (newval.tg_type > 4)) THEN
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> END IF;
>
> /* insert into the relation$ table */
> stmt := ' INSERT INTO '||topology||'_RELATION$ '||
> ' SELECT * from MDSYS.SDO_TOPO_RELATION_DATA A ' ||
> ' WHERE A.tg_layer_id = :flid and A.tg_id = :fid ';
> EXECUTE immediate stmt USING feature_L_id, feature_id;
>
> -- PARTITION OR NON PARTITION CASE
> IF (ia.IndexPartition IS NULL ) THEN
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ';
> EXECUTE IMMEDIATE stmt into idx_tab using ia.IndexSchema, ia.IndexName;
> ELSE
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = ' ||
> ' :iname AND SDO_INDEX_PARTITION = :indpart ';
>
> EXECUTE IMMEDIATE stmt INTO idx_tab USING
> ia.IndexSchema, ia.IndexName, ia.IndexPartition;
> END IF;
>
>
> -- insert into the index table
> /* do this only if rid is not NULL */
> IF (rid is not NULL) THEN
> idx_tab := ia.IndexSchema||'.'||idx_tab;
> stmt := ' INSERT INTO ' ||
> SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(idx_tab) ||
> ' values (:fid, :rid) ';
> EXECUTE IMMEDIATE stmt USING feature_id, rid;
> END IF;
>
> stmt := ' DELETE from MDSYS.SDO_TOPO_RELATION_DATA A ' ||
> ' WHERE A.tg_layer_id = :flid and A.tg_id = :fid ';
> EXECUTE immediate stmt USING feature_L_id, feature_id;
>
> EXCEPTION
> WHEN INVALID_TG_LAYER_GTYPE THEN
> dbms_output.put_line(sdo_util.number_to_char(feature_L_id));
> mderr.raise_md_error('MD', 'SDO', -13121, SYS.DBMS_ASSERT.noop(stmt));
> RETURN SYS.ODCIConst.Error;
> RAISE;
>
> WHEN INVALID_TG_LAYER_ID THEN
> stmt1 := sdo_util.number_to_char(cnt) || '::'||ia.IndexSchema||'::'||topology||
> '::'||table_name||'::'||column_name;
> mderr.raise_md_error('MD', 'SDO', -13113, SYS.DBMS_ASSERT.noop(stmt1));
> RETURN SYS.ODCIConst.Error;
> RAISE;
> END;
> RETURN SYS.ODCIConst.Success;
> END;
>
> FUNCTION index_delete (ia sys.odciindexinfo, rid varchar2,
> oldval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv)
> RETURN NUMBER IS
> stmt varchar2(1000);
> q_stmt varchar2(1000);
> topology varchar2(21);
> topology_in varchar2(21);
> topology_id number;
> feature_L_id number;
> feature_id number;
> idx_tab varchar2(260);
> type cursor_type is REF CURSOR;
> query_crs cursor_type ;
> p_tgl_id number;
> cnt number;
> layer_level number;
> id number;
> stmt_n varchar2(200);
> stmt_e varchar2(200);
> stmt_f varchar2(200);
> WS varchar2(130);
> old_sp varchar2(128);
> old_ws varchar2(128);
> parent_sp varchar2(128) ;
> parent_ws varchar2(128) ;
> isVersioned number;
> idx_columns SYS.ODCIColInfoList;
> table_name varchar2(130);
> ver_status varchar2(10);
>
> BEGIN
>
> IF (oldval IS NULL) THEN
> RETURN SYS.ODCIConst.Success;
> END IF;
>
> topology_id := oldval.topology_id;
> feature_L_id := oldval.tg_layer_id;
> feature_id := oldval.tg_id;
>
> stmt := ' select topology from mdsys.user_sdo_topo_info where ' ||
> ' topology_id = : topo_id and tg_layer_id = :flid ';
> EXECUTE IMMEDIATE stmt INTO topology_in USING topology_id, abs(feature_L_id);
>
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
> /* lock the old rows from the primitive tables, if the tg_layer_id
> is a leaf level layer */
> EXECUTE IMMEDIATE
> ' SELECT TG_LAYER_LEVEL from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :tid and tg_layer_id = abs(:tglid) '
> INTO layer_level USING topology_id, feature_l_id;
>
> IF ( feature_l_id < 0) THEN
> layer_level := 0;
> END IF;
>
> IF (layer_level = 0) THEN
>
> stmt_n := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 1 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt_e := ' select abs(topo_id) from '||topology||'_RELATION$ '||
> ' where topo_type = 2 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt_f := ' select topo_id from '||topology||'_RELATION$ '||
> ' where topo_type = 3 and tg_id = :fid '||
> ' and tg_layer_id = :lid ';
>
> stmt := ' select node_id from '||topology||'_NODE$' ||
> ' where node_id in ( ' ||stmt_n|| ') for update ';
>
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
> LOOP
> BEGIN
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select edge_id from '||topology||'_EDGE$' ||
> ' where edge_id in ( ' ||stmt_e|| ') for update ';
>
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
> LOOP
> BEGIN
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> stmt := ' select face_id from '||topology||'_FACE$' ||
> ' where face_id in ( ' ||stmt_f|| ') for update ';
40,43c1132,1311
< TOPOLOGY := SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(TOPOLOGY_IN);
< ISVERSIONED := SDO_TPIDX.ISVERSIONED(TOPOLOGY);
<
<
---
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
> LOOP
> BEGIN
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
> END;
> END LOOP;
> CLOSE query_crs;
>
> END IF;
>
> -- delete from the <>_Relation$ table the rows for feature
> -- do this only if this is not a row migration case
> IF ( ( (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> = SYS.ODCIConst.RowMigration) AND
> (bitand( env.EnvFlags, SYS.ODCIConst.IndexKeyChanged)
> = SYS.ODCIConst.IndexKeyChanged) ) OR
> (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> <> SYS.ODCIConst.RowMigration) ) THEN
> IF (rid is not NULL) THEN
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid ';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> END IF;
> END IF;
>
> -- PARTITION OR NON PARTITION CASE
> IF (ia.IndexPartition IS NULL ) THEN
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ';
>
> EXECUTE IMMEDIATE stmt INTO idx_tab USING ia.IndexSchema, ia.IndexName;
> ELSE
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
> ' where SDO_INDEX_OWNER = :owner and SDO_INDEX_NAME = :iname ' ||
> ' AND SDO_INDEX_PARTITION = :indpart ';
>
> EXECUTE IMMEDIATE stmt INTO idx_tab USING
> ia.IndexSchema, ia.IndexName, ia.IndexPartition;
> END IF;
>
> /* see if this tg_is is referred to by any other layer in the relation
> table for each parent layer that has this layer as the child layer
> count the rows in relation tables pointing to this tg_id
> if count > 0 then this violates the hierarchical constraint */
> -- do this only if this is not a row migration case
> IF ( ( (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> = SYS.ODCIConst.RowMigration) AND
> (bitand( env.EnvFlags, SYS.ODCIConst.IndexKeyChanged)
> = SYS.ODCIConst.IndexKeyChanged) ) OR
> (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> <> SYS.ODCIConst.RowMigration) ) THEN
>
> IF (rid IS NOT NULL) THEN
> EXECUTE IMMEDIATE
> 'select /*+ ordered use_nl (b,a) index ' ||
> '(a '||topology||'_REL_LID$ ) */ count(*) ' ||
> 'from mdsys.user_sdo_topo_info b, ' || topology || '_RELATION$ a ' ||
> 'WHERE b.topology_id = :id ' ||
> 'AND b.child_layer_id = :chlid ' ||
> 'AND b.tg_layer_id = a.tg_layer_id ' ||
> 'AND a.topo_type = :tgid AND rownum < 2'
> INTO cnt USING oldval.topology_id, abs(oldval.tg_layer_id), oldval.tg_id;
>
> IF (cnt > 0) THEN
> BEGIN
> /* this is hierarchical case */
> /* setup the variables for WM check bug 9206217*/
> isVersioned := 0;
> ver_status := NULL;
> idx_columns := ia.IndexCols;
> table_name := idx_columns(1).TableName;
> table_name := substr(table_name, 1, length(table_name)-3);
>
> EXECUTE IMMEDIATE 'select count(*)' ||
> ' from wmsys.ALL_WM_VERSIONED_TABLES' ||
> ' where owner = :1 and table_name = :2'
> INTO isVersioned
> USING idx_columns(1).tableschema, table_name;
>
> IF (isVersioned > 0) THEN
> BEGIN
> EXECUTE IMMEDIATE 'select state' ||
> ' from wmsys.ALL_WM_VERSIONED_TABLES' ||
> ' where owner = :1 and table_name = :2'
> INTO ver_status USING idx_columns(1).tableschema, table_name;
>
> /* need more checks if this is version enabled topology */
> EXECUTE IMMEDIATE
> 'select nvl(sys_context(''lt_ctx'', ''savepoint_name''),' ||
> ' ''LATEST'') from SYS.DUAL '
> INTO old_sp;
>
> EXECUTE IMMEDIATE
> 'select wmsys.lt.getworkspace from SYS.DUAL' INTO old_ws;
>
> EXECUTE IMMEDIATE
> 'select parent_workspace, parent_savepoint' ||
> ' from wmsys.all_workspaces' ||
> ' where workspace = dbms_wm.getworkspace '
> INTO parent_ws, parent_sp;
>
> IF (parent_sp IS NOT NULL) THEN
> EXECUTE IMMEDIATE 'declare begin ' ||
> 'dbms_wm.gotoworkspace(:parent_workspace); ' ||
> 'dbms_wm.gotosavepoint(:parent_savepoint); end; '
> USING parent_ws, parent_sp;
> END IF;
>
> cnt := -1;
> EXECUTE IMMEDIATE 'select count(*) from ' || topology ||
> '_RELATION$ where tg_layer_id = :tglid and tg_id = :tgid'
> INTO cnt USING abs(feature_L_id), feature_id;
>
> EXECUTE IMMEDIATE 'declare begin ' ||
> 'dbms_wm.gotoworkspace(:old_ws); end; '
> USING old_ws;
>
> IF (old_sp <> 'LATEST') THEN
> EXECUTE IMMEDIATE 'declare begin ' ||
> 'dbms_wm.gotosavepoint(:old_sp); end; '
> USING old_sp;
> END IF;
>
> IF ( (cnt = 0) AND (ver_status <> 'DV') ) THEN
> mderr.raise_md_error('MD', 'SDO', -13199,
> 'Cannot delete a TG object with dependent parent objects');
> RETURN SYS.ODCIConst.Error;
> END IF;
> END;
> ELSE
> BEGIN
> mderr.raise_md_error('MD', 'SDO', -13199,
> 'Cannot delete a TG object with dependent parent objects');
> RETURN SYS.ODCIConst.Error;
> END;
> END IF; /* isVersioned */
> END;
> END IF; /* cnt > 0 */
> END IF; /* RID is not NULL */
> END IF;
>
> -- delete from the index table
> IF (rid is not NULL) THEN
> idx_tab := ia.IndexSchema||'.'||idx_tab;
> stmt := 'DELETE '|| SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(idx_tab) ||
> ' WHERE SDO_TG_ID = :fid' ||
> ' AND sdo_rowid = :rid';
> EXECUTE IMMEDIATE stmt USING feature_id, rid;
> END IF;
>
> RETURN SYS.ODCIConst.Success;
> END;
>
> FUNCTION isversioned(topology IN VARCHAR2) return integer IS
> topo_name varchar2(130);
> owner varchar2(130);
> stmt varchar2(200);
> versionedTopology integer;
> owmInstalled integer;
> BEGIN
> mdsys.SDO_TOPO_METADATA.extract_topo_owner(
> nls_upper(SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(topology)), owner,topo_name);
> versionedTopology := 0;
>
> SELECT MDSYS.SDO_OWM_INSTALLED INTO owmInstalled FROM SYS.DUAL;
>
> IF ( owmInstalled > 0 ) THEN
> stmt := ' select count(*) ' ||
> ' from wmsys.ALL_WM_VERSIONED_TABLES ' ||
> ' where owner = :1 and table_name = :2';
> EXECUTE IMMEDIATE stmt INTO versionedTopology
> USING owner, SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(topo_name) || '_NODE$';
> END IF;
>
> RETURN versionedTopology;
> END;
>
> END sdo_tpidx;
44a1313
> PACKAGE BODY sdo_tpidx AS
45a1315,1316
> INVALID_TG_LAYER_ID exception;
> INVALID_TG_LAYER_GTYPE exception;
46a1318,1345
> FUNCTION Index_Update (ia sys.odciindexinfo, rid varchar2,
> oldval mdsys.sdo_topo_geometry,
> newval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv) return number is
> retval number;
> stmt varchar2(1000);
> upd_stmt varchar2(1000);
> cnt NUMBER;
> topology varchar2(130);
> topology_in varchar2(130);
> type cursor_type is REF CURSOR;
> query_crs cursor_type ;
> p_tgl_id number;
> layer_level number;
> stmt_n varchar2(200);
> stmt_e varchar2(200);
> stmt_f varchar2(200);
> id number;
> WS varchar2(130);
> isVersioned number;
> begin
> /* In the relation table, copy over the old values to the new
> topo_geometry if there are records.
> 1. Delete for the old tg_id those records that are set with a 'D'
> for the new tg_id.
> 2. Delete the records with a 'D' for the new tg_id.
> 2. Copy the rows from the old tg_id to the new tg_id.
> */
47a1347,1353
> IF ( (newval is NOT NULL) AND (oldval is not NULL) ) THEN
> stmt := ' SELECT distinct topology from mdsys.user_sdo_topo_metadata ' ||
> ' WHERE topology_id = :id ';
> EXECUTE IMMEDIATE stmt into topology_in USING newval.topology_id;
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
> isVersioned := sdo_tpidx.isversioned(topology);
49c1355,1361
< STMT := ' select TG_LAYER_ID from mdsys.user_sdo_topo_metadata '||
---
> /* first cleanup the higher level layers so that they point to the
> new tg_id in the relation$ table.
> for each parent layer with current layer as the child layer
> update the relation$
> */
>
> stmt := ' select TG_LAYER_ID from mdsys.user_sdo_topo_metadata '||
51,52c1363,1364
< OPEN QUERY_CRS FOR STMT USING NEWVAL.TOPOLOGY_ID,
< ABS(NEWVAL.TG_LAYER_ID);
---
> OPEN query_crs FOR stmt using newval.topology_id,
> abs(newval.tg_layer_id);
55,57c1367,1369
< FETCH QUERY_CRS INTO P_TGL_ID;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
< UPD_STMT := ' update '||TOPOLOGY||'_RELATION$ ' ||
---
> FETCH query_crs INTO p_tgl_id;
> EXIT when query_crs%NOTFOUND ;
> upd_stmt := ' update '||topology||'_RELATION$ ' ||
61,62c1373,1374
< EXECUTE IMMEDIATE UPD_STMT
< USING NEWVAL.TG_ID, P_TGL_ID, OLDVAL.TG_ID;
---
> EXECUTE immediate upd_stmt
> USING newval.tg_id, p_tgl_id, oldval.tg_id;
65,66c1377
< CLOSE QUERY_CRS ;
<
---
> CLOSE query_crs ;
68d1378
<
70c1380,1382
< EXECUTE IMMEDIATE
---
> /* lock the old rows from the primitive tables, if the tg_layer_id
> is a leaf level layer */
> EXECUTE IMMEDIATE
73c1385
< INTO LAYER_LEVEL USING NEWVAL.TOPOLOGY_ID, NEWVAL.TG_LAYER_ID;
---
> into layer_level using newval.topology_id, newval.tg_layer_id;
75,77c1387,1389
< IF ( NEWVAL.TG_LAYER_ID < 0) THEN
< LAYER_LEVEL := 0;
< END IF;
---
> if ( newval.tg_layer_id < 0) then
> layer_level := 0;
> end if;
79c1391
< IF (LAYER_LEVEL = 0) THEN
---
> IF (layer_level = 0) then
81c1393
< STMT_N := ' select topo_id from '||TOPOLOGY||'_RELATION$ '||
---
> stmt_n := ' select topo_id from '||topology||'_RELATION$ '||
83,84c1395,1396
< ' and tg_layer_id = :lid ';
< STMT_E := ' select topo_id from '||TOPOLOGY||'_RELATION$ '||
---
> ' and tg_layer_id = :lid ';
> stmt_e := ' select topo_id from '||topology||'_RELATION$ '||
86,87c1398,1399
< ' and tg_layer_id = :lid ';
< STMT_F := ' select topo_id from '||TOPOLOGY||'_RELATION$ '||
---
> ' and tg_layer_id = :lid ';
> stmt_f := ' select topo_id from '||topology||'_RELATION$ '||
91,92c1403,1404
< STMT := ' select node_id from '||TOPOLOGY||'_NODE$' ||
< ' where node_id in ( ' ||STMT_N|| ') for update ';
---
> stmt := ' select node_id from '||topology||'_NODE$' ||
> ' where node_id in ( ' ||stmt_n|| ') for update ';
94c1406
< OPEN QUERY_CRS FOR STMT USING NEWVAL.TG_ID, NEWVAL.TG_LAYER_ID;
---
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
97,99c1409,1411
< FETCH QUERY_CRS INTO ID;
< IF (ID IS NOT NULL AND ISVERSIONED = 1) THEN
< EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' INTO WS;
---
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
101c1413
< EXECUTE IMMEDIATE
---
> EXECUTE IMMEDIATE
103c1415
< USING WS, TOPOLOGY||'_NODE$', 'node_id = '||SDO_UTIL.NUMBER_TO_CHAR(ID) ;
---
> USING WS, topology||'_NODE$', 'node_id = '||sdo_util.number_to_char(id) ;
105,106c1417,1418
< END IF;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
---
> END IF;
> EXIT when query_crs%NOTFOUND ;
109c1421
< CLOSE QUERY_CRS;
---
> CLOSE query_crs;
111,112c1423,1424
< STMT := ' select edge_id from '||TOPOLOGY||'_EDGE$' ||
< ' where edge_id in ( ' ||STMT_E|| ') for update ';
---
> stmt := ' select edge_id from '||topology||'_EDGE$' ||
> ' where edge_id in ( ' ||stmt_e|| ') for update ';
114c1426
< OPEN QUERY_CRS FOR STMT USING NEWVAL.TG_ID, NEWVAL.TG_LAYER_ID;
---
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
117,119c1429,1431
< FETCH QUERY_CRS INTO ID;
< IF (ID IS NOT NULL AND ISVERSIONED = 1) THEN
< EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' INTO WS;
---
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
121c1433
< EXECUTE IMMEDIATE
---
> EXECUTE IMMEDIATE
123c1435
< USING WS, TOPOLOGY||'_EDGE$', 'edge_id = '||SDO_UTIL.NUMBER_TO_CHAR(ID) ;
---
> USING WS, topology||'_EDGE$', 'edge_id = '||sdo_util.number_to_char(id) ;
125,126c1437,1438
< END IF;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
---
> END IF;
> EXIT when query_crs%NOTFOUND ;
129c1441
< CLOSE QUERY_CRS;
---
> CLOSE query_crs;
131,132c1443,1444
< STMT := ' select face_id from '||TOPOLOGY||'_FACE$' ||
< ' where face_id in ( ' ||STMT_F|| ') for update ';
---
> stmt := ' select face_id from '||topology||'_FACE$' ||
> ' where face_id in ( ' ||stmt_f|| ') for update ';
134c1446
< OPEN QUERY_CRS FOR STMT USING NEWVAL.TG_ID, NEWVAL.TG_LAYER_ID;
---
> OPEN query_crs FOR stmt using newval.tg_id, newval.tg_layer_id;
137,139c1449,1451
< FETCH QUERY_CRS INTO ID;
< IF (ID IS NOT NULL AND ISVERSIONED = 1) THEN
< EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' INTO WS;
---
> FETCH query_crs into id;
> IF (id is not NULL AND isVersioned = 1) THEN
> EXECUTE IMMEDIATE 'SELECT DBMS_WM.GetWorkspace FROM SYS.DUAL ' into WS;
141c1453
< EXECUTE IMMEDIATE
---
> EXECUTE IMMEDIATE
143c1455
< USING WS, TOPOLOGY||'_FACE$', 'face_id = '||SDO_UTIL.NUMBER_TO_CHAR(ID);
---
> USING WS, topology||'_FACE$', 'face_id = '||sdo_util.number_to_char(id);
145,146c1457,1458
< END IF;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
---
> END IF;
> EXIT when query_crs%NOTFOUND ;
149,151c1461
< CLOSE QUERY_CRS;
<
< END IF;
---
> CLOSE query_crs;
153c1463
<
---
> end if;
155c1465,1467
< STMT := ' DELETE FROM '||TOPOLOGY||'_RELATION$ ' ||
---
> /* delete rows from the old tg_id corresponding to rows set to 'D' for
> new tg_id */
> stmt := ' DELETE FROM '||topology||'_RELATION$ ' ||
157c1469
< ' ( SELECT tg_layer_id, '||SDO_UTIL.NUMBER_TO_CHAR(OLDVAL.TG_ID)||', '||
---
> ' ( SELECT tg_layer_id, '||sdo_util.number_to_char(oldval.tg_id)||', '||
161c1473
< EXECUTE IMMEDIATE STMT USING NEWVAL.TG_LAYER_ID, NEWVAL.TG_ID;
---
> EXECUTE IMMEDIATE stmt using newval.tg_layer_id, newval.tg_id;
163,164c1475,1476
<
<
---
> /* if there are rows to append from the old tg_id, do it here */
> /* and do this only if the tg_id is different from the old value */
166,167c1478,1479
< IF (NEWVAL.TG_ID <> OLDVAL.TG_ID) THEN
< STMT := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
---
> if (newval.tg_id <> oldval.tg_id) then
> stmt := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
170c1482
< EXECUTE IMMEDIATE STMT INTO CNT USING NEWVAL.TG_LAYER_ID, NEWVAL.TG_ID;
---
> EXECUTE IMMEDIATE stmt into cnt using newval.TG_LAYER_ID, newval.TG_ID;
172,174c1484,1486
< IF (CNT = 1) THEN
< STMT := ' INSERT INTO '||TOPOLOGY||'_RELATION$ ' ||
< ' SELECT tg_layer_id, '||SDO_UTIL.NUMBER_TO_CHAR(NEWVAL.TG_ID)||', '||
---
> IF (cnt = 1) THEN /* we need to copy the rows from oldval to newval */
> stmt := ' INSERT INTO '||topology||'_RELATION$ ' ||
> ' SELECT tg_layer_id, '||sdo_util.number_to_char(newval.tg_id)||', '||
176c1488
< ' FROM '||TOPOLOGY||'_RELATION$ '||
---
> ' FROM '||topology||'_RELATION$ '||
178,179c1490,1491
< EXECUTE IMMEDIATE STMT USING
< OLDVAL.TG_LAYER_ID, OLDVAL.TG_ID;
---
> EXECUTE IMMEDIATE stmt USING
> oldval.tg_layer_id, oldval.tg_id;
181c1493
< STMT := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
---
> stmt := ' SELECT count(*) from MDSYS.SDO_TOPO_RELATION_DATA ' ||
183,185c1495,1497
< EXECUTE IMMEDIATE STMT INTO CNT USING NEWVAL.TG_LAYER_ID, NEWVAL.TG_ID;
< IF (CNT = 0) THEN
< MDERR.RAISE_MD_ERROR('MD','SDO',-13122);
---
> EXECUTE IMMEDIATE stmt into cnt using newval.TG_LAYER_ID, newval.TG_ID;
> IF (cnt = 0) THEN /* Error: bug 4681927 */
> mderr.raise_md_error('MD','SDO',-13122);
187c1499
< END IF;
---
> end if;
189,190c1501,1502
<
< STMT := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
---
> /* now cleanup the rows with 'A' and 'D' values for the topo_attribute */
> stmt := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
193c1505
< EXECUTE IMMEDIATE STMT USING NEWVAL.TG_LAYER_ID, NEWVAL.TG_ID;
---
> EXECUTE IMMEDIATE stmt using newval.TG_LAYER_ID, newval.TG_ID;
196,200c1508,1512
<
<
< IF ( (OLDVAL IS NULL) AND (NEWVAL IS NOT NULL) ) THEN
<
< STMT := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
---
> /* remove the dummy entries in MDSYS.SDO_TOPO_RELATION_DATA
> for this special case */
> if ( (oldval is NULL) AND (newval is not NULL) ) then
> /* now cleanup the rows with 'A' and 'D' values for the topo_attribute */
> stmt := ' DELETE FROM MDSYS.SDO_TOPO_RELATION_DATA ' ||
203,215c1515,1516
< EXECUTE IMMEDIATE STMT USING NEWVAL.TG_LAYER_ID, NEWVAL.TG_ID;
< END IF;
<
< IF ( (NEWVAL IS NOT NULL) AND (OLDVAL IS NOT NULL) AND
< (OLDVAL.TG_ID = NEWVAL.TG_ID) ) THEN
< RETVAL := SDO_TPIDX.INDEX_DELETE(IA, NULL, OLDVAL, ENV);
< RETVAL := SDO_TPIDX.INDEX_INSERT(IA, NULL, NEWVAL, ENV);
< ELSE
< RETVAL := SDO_TPIDX.INDEX_DELETE(IA, RID, OLDVAL, ENV);
< RETVAL := SDO_TPIDX.INDEX_INSERT(IA, RID, NEWVAL, ENV);
< END IF;
< RETURN RETVAL;
< END;
---
> EXECUTE IMMEDIATE stmt using newval.TG_LAYER_ID, newval.TG_ID;
> end if;
217,224c1518,1536
<
<
<
<
<
< FUNCTION INDEX_INSERT (IA SYS.ODCIINDEXINFO, RID VARCHAR2,
< NEWVAL MDSYS.SDO_TOPO_GEOMETRY,
< ENV SYS.ODCIENV)
---
> if ( (newval is not NULL) AND (oldval is not NULL) AND
> (oldval.tg_id = newval.tg_id) ) then
> retval := sdo_tpidx.index_delete(ia, null, oldval, env);
> retval := sdo_tpidx.index_insert(ia, null, newval, env);
> else
> retval := sdo_tpidx.index_delete(ia, rid, oldval, env);
> retval := sdo_tpidx.index_insert(ia, rid, newval, env);
> end if;
> return retval;
> end;
>
> -----------------------------index_insert------------------------------------
> ---
> --- BUGS:
> --- internal: 02/27/04, add the collection type dealing
> ---
> FUNCTION index_insert (ia sys.odciindexinfo, rid varchar2,
> newval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv)
226,239c1538,1551
< STMT VARCHAR2(1000);
< STMT1 VARCHAR2(1000);
< TABLE_NAME VARCHAR2(260);
< COLUMN_NAME VARCHAR2(130);
< TOPOLOGY VARCHAR2(130);
< TOPOLOGY_IN VARCHAR2(130);
< TOPOLOGY_ID NUMBER;
< FEATURE_L_ID NUMBER;
< FEATURE_TYPE NUMBER;
< FEATURE_ID NUMBER;
< IDX_COLUMNS SYS.ODCICOLINFOLIST;
< CNT NUMBER;
< LAYER_GTYPE VARCHAR2(32);
< IDX_TAB VARCHAR2(260);
---
> stmt varchar2(1000);
> stmt1 varchar2(1000);
> table_name varchar2(260);
> column_name varchar2(130);
> topology varchar2(130);
> topology_in varchar2(130);
> topology_id number;
> feature_L_id number;
> feature_type number;
> feature_id number;
> idx_columns SYS.ODCIColInfoList;
> cnt number;
> layer_gtype varchar2(32);
> idx_tab varchar2(260);
242,243c1554,1555
< IF (NEWVAL IS NULL) THEN
< RETURN SYS.ODCICONST.SUCCESS;
---
> IF (newval is NULL) THEN
> return SYS.ODCIConst.Success;
246,252c1558,1564
< IDX_COLUMNS := IA.INDEXCOLS;
< TABLE_NAME := IDX_COLUMNS(1).TABLENAME;
< COLUMN_NAME := IDX_COLUMNS(1).COLNAME;
< COLUMN_NAME := REPLACE(COLUMN_NAME, '"');
< TOPOLOGY_ID := NEWVAL.TOPOLOGY_ID;
< FEATURE_L_ID := NEWVAL.TG_LAYER_ID;
< FEATURE_ID := NEWVAL.TG_ID;
---
> idx_columns := ia.IndexCols;
> table_name := idx_columns(1).TableName;
> column_name := idx_columns(1).ColName;
> column_name := REPLACE(column_name, '"');
> topology_id := newval.topology_id;
> feature_L_id := newval.tg_layer_id;
> feature_id := newval.tg_id;
255,257c1567,1569
< IF (FEATURE_L_ID IS NULL) THEN
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13113);
< RETURN SYS.ODCICONST.ERROR;
---
> IF (feature_L_id IS NULL) THEN
> mderr.raise_md_error('MD', 'SDO', -13113);
> RETURN SYS.ODCIConst.Error;
260,261c1572,1573
<
< TOPOLOGY_IN := NULL;
---
> -- check the layer_id consistency
> topology_in := NULL;
263c1575
< STMT := 'select topology from mdsys.user_sdo_topo_info where owner = :owner ' ||
---
> stmt := 'select topology from mdsys.user_sdo_topo_info where owner = :owner ' ||
267,269c1579,1581
< EXECUTE IMMEDIATE STMT INTO TOPOLOGY_IN
< USING IA.INDEXSCHEMA, TOPOLOGY_ID,TABLE_NAME,
< COLUMN_NAME, ABS(FEATURE_L_ID);
---
> EXECUTE IMMEDIATE stmt INTO topology_in
> USING ia.IndexSchema, topology_id,table_name,
> column_name, abs(feature_L_id);
272,273c1584,1585
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13113);
< RETURN SYS.ODCICONST.ERROR;
---
> mderr.raise_md_error('MD', 'SDO', -13113);
> RETURN SYS.ODCIConst.Error;
276,285c1588,1597
<
< IF (TOPOLOGY_IN IS NULL) THEN
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13261, STMT);
< RAISE INVALID_TG_LAYER_ID;
< END IF;
<
< TOPOLOGY := SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(TOPOLOGY_IN);
<
<
< STMT := ' select SDO_LAYER_GTYPE from mdsys.all_sdo_index_metadata ' ||
---
>
> IF (topology_in IS NULL) THEN
> mderr.raise_md_error('MD', 'SDO', -13261, stmt);
> raise INVALID_TG_LAYER_ID;
> END IF;
>
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
>
> -- check the feature type consistency
> stmt := ' select SDO_LAYER_GTYPE from mdsys.all_sdo_index_metadata ' ||
287c1599,1633
< EXECUTE IMMEDIATE STMT INTO LAYER_GTYPE USING IA.INDEXSCHEMA, IA.INDEXNAME;
---
> EXECUTE IMMEDIATE stmt INTO layer_gtype USING ia.IndexSchema, ia.IndexName;
>
> IF (layer_gtype = 'POLYGON' ) THEN
> IF (newval.tg_type <> 3) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'LINE' OR layer_gtype = 'CURVE' ) THEN
> IF (newval.tg_type <> 2) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'POINT' ) THEN
> IF (newval.tg_type <> 1) THEN
> -- rollback if there is an error
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> ELSIF (layer_gtype = 'COLLECTION') THEN
> IF ((newval.tg_type < 1) OR
> (newval.tg_type > 4)) THEN
> stmt := 'delete from '||topology||'_relation$ where ' ||
> ' tg_layer_id = :flid and tg_id = :fid';
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
> raise INVALID_TG_LAYER_GTYPE;
> END IF;
> END IF;
289,324c1635,1636
< IF (LAYER_GTYPE = 'POLYGON' ) THEN
< IF (NEWVAL.TG_TYPE <> 3) THEN
<
< STMT := 'delete from '||TOPOLOGY||'_relation$ where ' ||
< ' tg_layer_id = :flid and tg_id = :fid';
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
< RAISE INVALID_TG_LAYER_GTYPE;
< END IF;
< ELSIF (LAYER_GTYPE = 'LINE' OR LAYER_GTYPE = 'CURVE' ) THEN
< IF (NEWVAL.TG_TYPE <> 2) THEN
<
< STMT := 'delete from '||TOPOLOGY||'_relation$ where ' ||
< ' tg_layer_id = :flid and tg_id = :fid';
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
< RAISE INVALID_TG_LAYER_GTYPE;
< END IF;
< ELSIF (LAYER_GTYPE = 'POINT' ) THEN
< IF (NEWVAL.TG_TYPE <> 1) THEN
<
< STMT := 'delete from '||TOPOLOGY||'_relation$ where ' ||
< ' tg_layer_id = :flid and tg_id = :fid';
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
< RAISE INVALID_TG_LAYER_GTYPE;
< END IF;
< ELSIF (LAYER_GTYPE = 'COLLECTION') THEN
< IF ((NEWVAL.TG_TYPE < 1) OR
< (NEWVAL.TG_TYPE > 4)) THEN
< STMT := 'delete from '||TOPOLOGY||'_relation$ where ' ||
< ' tg_layer_id = :flid and tg_id = :fid';
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
< RAISE INVALID_TG_LAYER_GTYPE;
< END IF;
< END IF;
<
<
< STMT := ' INSERT INTO '||TOPOLOGY||'_RELATION$ '||
---
> /* insert into the relation$ table */
> stmt := ' INSERT INTO '||topology||'_RELATION$ '||
327c1639
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
---
> EXECUTE immediate stmt USING feature_L_id, feature_id;
329,332c1641,1644
<
< IF (IA.INDEXPARTITION IS NULL ) THEN
<
< STMT := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
---
> -- PARTITION OR NON PARTITION CASE
> IF (ia.IndexPartition IS NULL ) THEN
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
334c1646
< EXECUTE IMMEDIATE STMT INTO IDX_TAB USING IA.INDEXSCHEMA, IA.INDEXNAME;
---
> EXECUTE IMMEDIATE stmt into idx_tab using ia.IndexSchema, ia.IndexName;
336,337c1648,1649
<
< STMT := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
---
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
341,342c1653,1654
< EXECUTE IMMEDIATE STMT INTO IDX_TAB USING
< IA.INDEXSCHEMA, IA.INDEXNAME, IA.INDEXPARTITION;
---
> EXECUTE IMMEDIATE stmt INTO idx_tab USING
> ia.IndexSchema, ia.IndexName, ia.IndexPartition;
346,351c1658,1663
<
<
< IF (RID IS NOT NULL) THEN
< IDX_TAB := IA.INDEXSCHEMA||'.'||IDX_TAB;
< STMT := ' INSERT INTO ' ||
< SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(IDX_TAB) ||
---
> -- insert into the index table
> /* do this only if rid is not NULL */
> IF (rid is not NULL) THEN
> idx_tab := ia.IndexSchema||'.'||idx_tab;
> stmt := ' INSERT INTO ' ||
> SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(idx_tab) ||
353c1665
< EXECUTE IMMEDIATE STMT USING FEATURE_ID, RID;
---
> EXECUTE IMMEDIATE stmt USING feature_id, rid;
356c1668
< STMT := ' DELETE from MDSYS.SDO_TOPO_RELATION_DATA A ' ||
---
> stmt := ' DELETE from MDSYS.SDO_TOPO_RELATION_DATA A ' ||
358c1670
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
---
> EXECUTE immediate stmt USING feature_L_id, feature_id;
362,364c1674,1676
< DBMS_OUTPUT.PUT_LINE(SDO_UTIL.NUMBER_TO_CHAR(FEATURE_L_ID));
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13121, SYS.DBMS_ASSERT.NOOP(STMT));
< RETURN SYS.ODCICONST.ERROR;
---
> dbms_output.put_line(sdo_util.number_to_char(feature_L_id));
> mderr.raise_md_error('MD', 'SDO', -13121, SYS.DBMS_ASSERT.noop(stmt));
> RETURN SYS.ODCIConst.Error;
368,371c1680,1683
< STMT1 := SDO_UTIL.NUMBER_TO_CHAR(CNT) || '::'||IA.INDEXSCHEMA||'::'||TOPOLOGY||
< '::'||TABLE_NAME||'::'||COLUMN_NAME;
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13113, SYS.DBMS_ASSERT.NOOP(STMT1));
< RETURN SYS.ODCICONST.ERROR;
---
> stmt1 := sdo_util.number_to_char(cnt) || '::'||ia.IndexSchema||'::'||topology||
> '::'||table_name||'::'||column_name;
> mderr.raise_md_error('MD', 'SDO', -13113, SYS.DBMS_ASSERT.noop(stmt1));
> RETURN SYS.ODCIConst.Error;
374c1686
< RETURN SYS.ODCICONST.SUCCESS;
---
> RETURN SYS.ODCIConst.Success;
377,379c1689,1691
< FUNCTION INDEX_DELETE (IA SYS.ODCIINDEXINFO, RID VARCHAR2,
< OLDVAL MDSYS.SDO_TOPO_GEOMETRY,
< ENV SYS.ODCIENV)
---
> FUNCTION index_delete (ia sys.odciindexinfo, rid varchar2,
> oldval mdsys.sdo_topo_geometry,
> env sys.ODCIEnv)
381,406c1693,1718
< STMT VARCHAR2(1000);
< Q_STMT VARCHAR2(1000);
< TOPOLOGY VARCHAR2(21);
< TOPOLOGY_IN VARCHAR2(21);
< TOPOLOGY_ID NUMBER;
< FEATURE_L_ID NUMBER;
< FEATURE_ID NUMBER;
< IDX_TAB VARCHAR2(260);
< TYPE CURSOR_TYPE IS REF CURSOR;
< QUERY_CRS CURSOR_TYPE ;
< P_TGL_ID NUMBER;
< CNT NUMBER;
< LAYER_LEVEL NUMBER;
< ID NUMBER;
< STMT_N VARCHAR2(200);
< STMT_E VARCHAR2(200);
< STMT_F VARCHAR2(200);
< WS VARCHAR2(130);
< OLD_SP VARCHAR2(128);
< OLD_WS VARCHAR2(128);
< PARENT_SP VARCHAR2(128) ;
< PARENT_WS VARCHAR2(128) ;
< ISVERSIONED NUMBER;
< IDX_COLUMNS SYS.ODCICOLINFOLIST;
< TABLE_NAME VARCHAR2(130);
< VER_STATUS VARCHAR2(10);
---
> stmt varchar2(1000);
> q_stmt varchar2(1000);
> topology varchar2(21);
> topology_in varchar2(21);
> topology_id number;
> feature_L_id number;
> feature_id number;
> idx_tab varchar2(260);
> type cursor_type is REF CURSOR;
> query_crs cursor_type ;
> p_tgl_id number;
> cnt number;
> layer_level number;
> id number;
> stmt_n varchar2(200);
> stmt_e varchar2(200);
> stmt_f varchar2(200);
> WS varchar2(130);
> old_sp varchar2(128);
> old_ws varchar2(128);
> parent_sp varchar2(128) ;
> parent_ws varchar2(128) ;
> isVersioned number;
> idx_columns SYS.ODCIColInfoList;
> table_name varchar2(130);
> ver_status varchar2(10);
410,411c1722,1723
< IF (OLDVAL IS NULL) THEN
< RETURN SYS.ODCICONST.SUCCESS;
---
> IF (oldval IS NULL) THEN
> RETURN SYS.ODCIConst.Success;
414,416c1726,1728
< TOPOLOGY_ID := OLDVAL.TOPOLOGY_ID;
< FEATURE_L_ID := OLDVAL.TG_LAYER_ID;
< FEATURE_ID := OLDVAL.TG_ID;
---
> topology_id := oldval.topology_id;
> feature_L_id := oldval.tg_layer_id;
> feature_id := oldval.tg_id;
418c1730
< STMT := ' select topology from mdsys.user_sdo_topo_info where ' ||
---
> stmt := ' select topology from mdsys.user_sdo_topo_info where ' ||
420c1732
< EXECUTE IMMEDIATE STMT INTO TOPOLOGY_IN USING TOPOLOGY_ID, ABS(FEATURE_L_ID);
---
> EXECUTE IMMEDIATE stmt INTO topology_in USING topology_id, abs(feature_L_id);
423,426c1735,1738
< TOPOLOGY := SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(TOPOLOGY_IN);
<
<
< EXECUTE IMMEDIATE
---
> topology := SYS.DBMS_ASSERT.qualified_sql_name(topology_in);
> /* lock the old rows from the primitive tables, if the tg_layer_id
> is a leaf level layer */
> EXECUTE IMMEDIATE
429c1741
< INTO LAYER_LEVEL USING TOPOLOGY_ID, FEATURE_L_ID;
---
> INTO layer_level USING topology_id, feature_l_id;
431,432c1743,1744
< IF ( FEATURE_L_ID < 0) THEN
< LAYER_LEVEL := 0;
---
> IF ( feature_l_id < 0) THEN
> layer_level := 0;
435c1747
< IF (LAYER_LEVEL = 0) THEN
---
> IF (layer_level = 0) THEN
437c1749
< STMT_N := ' select topo_id from '||TOPOLOGY||'_RELATION$ '||
---
> stmt_n := ' select topo_id from '||topology||'_RELATION$ '||
439c1751
< ' and tg_layer_id = :lid ';
---
> ' and tg_layer_id = :lid ';
441c1753
< STMT_E := ' select abs(topo_id) from '||TOPOLOGY||'_RELATION$ '||
---
> stmt_e := ' select abs(topo_id) from '||topology||'_RELATION$ '||
443c1755
< ' and tg_layer_id = :lid ';
---
> ' and tg_layer_id = :lid ';
445c1757
< STMT_F := ' select topo_id from '||TOPOLOGY||'_RELATION$ '||
---
> stmt_f := ' select topo_id from '||topology||'_RELATION$ '||
449,450c1761,1762
< STMT := ' select node_id from '||TOPOLOGY||'_NODE$' ||
< ' where node_id in ( ' ||STMT_N|| ') for update ';
---
> stmt := ' select node_id from '||topology||'_NODE$' ||
> ' where node_id in ( ' ||stmt_n|| ') for update ';
452c1764
< OPEN QUERY_CRS FOR STMT USING FEATURE_ID, FEATURE_L_ID;
---
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
455,456c1767,1768
< FETCH QUERY_CRS INTO ID;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
---
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
459c1771
< CLOSE QUERY_CRS;
---
> CLOSE query_crs;
461,462c1773,1774
< STMT := ' select edge_id from '||TOPOLOGY||'_EDGE$' ||
< ' where edge_id in ( ' ||STMT_E|| ') for update ';
---
> stmt := ' select edge_id from '||topology||'_EDGE$' ||
> ' where edge_id in ( ' ||stmt_e|| ') for update ';
464c1776
< OPEN QUERY_CRS FOR STMT USING FEATURE_ID, FEATURE_L_ID;
---
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
467,468c1779,1780
< FETCH QUERY_CRS INTO ID;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
---
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
471c1783
< CLOSE QUERY_CRS;
---
> CLOSE query_crs;
473,474c1785,1786
< STMT := ' select face_id from '||TOPOLOGY||'_FACE$' ||
< ' where face_id in ( ' ||STMT_F|| ') for update ';
---
> stmt := ' select face_id from '||topology||'_FACE$' ||
> ' where face_id in ( ' ||stmt_f|| ') for update ';
476c1788
< OPEN QUERY_CRS FOR STMT USING FEATURE_ID, FEATURE_L_ID;
---
> OPEN query_crs FOR stmt USING feature_id, feature_l_id;
479,480c1791,1792
< FETCH QUERY_CRS INTO ID;
< EXIT WHEN QUERY_CRS%NOTFOUND ;
---
> FETCH query_crs INTO id;
> EXIT when query_crs%NOTFOUND ;
483c1795
< CLOSE QUERY_CRS;
---
> CLOSE query_crs;
487,496c1799,1808
<
<
< IF ( ( (BITAND( ENV.ENVFLAGS, SYS.ODCICONST.ROWMIGRATION)
< = SYS.ODCICONST.ROWMIGRATION) AND
< (BITAND( ENV.ENVFLAGS, SYS.ODCICONST.INDEXKEYCHANGED)
< = SYS.ODCICONST.INDEXKEYCHANGED) ) OR
< (BITAND( ENV.ENVFLAGS, SYS.ODCICONST.ROWMIGRATION)
< <> SYS.ODCICONST.ROWMIGRATION) ) THEN
< IF (RID IS NOT NULL) THEN
< STMT := 'delete from '||TOPOLOGY||'_relation$ where ' ||
---
> -- delete from the <>_Relation$ table the rows for feature
> -- do this only if this is not a row migration case
> IF ( ( (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> = SYS.ODCIConst.RowMigration) AND
> (bitand( env.EnvFlags, SYS.ODCIConst.IndexKeyChanged)
> = SYS.ODCIConst.IndexKeyChanged) ) OR
> (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> <> SYS.ODCIConst.RowMigration) ) THEN
> IF (rid is not NULL) THEN
> stmt := 'delete from '||topology||'_relation$ where ' ||
498c1810
< EXECUTE IMMEDIATE STMT USING FEATURE_L_ID, FEATURE_ID;
---
> EXECUTE IMMEDIATE stmt USING feature_L_id, feature_id;
502,505c1814,1817
<
< IF (IA.INDEXPARTITION IS NULL ) THEN
<
< STMT := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
---
> -- PARTITION OR NON PARTITION CASE
> IF (ia.IndexPartition IS NULL ) THEN
> -- insert the rowid, feature id into the index table
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
508c1820
< EXECUTE IMMEDIATE STMT INTO IDX_TAB USING IA.INDEXSCHEMA, IA.INDEXNAME;
---
> EXECUTE IMMEDIATE stmt INTO idx_tab USING ia.IndexSchema, ia.IndexName;
510c1822
< STMT := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
---
> stmt := 'select SDO_INDEX_TABLE from mdsys.all_sdo_index_metadata ' ||
514,515c1826,1827
< EXECUTE IMMEDIATE STMT INTO IDX_TAB USING
< IA.INDEXSCHEMA, IA.INDEXNAME, IA.INDEXPARTITION;
---
> EXECUTE IMMEDIATE stmt INTO idx_tab USING
> ia.IndexSchema, ia.IndexName, ia.IndexPartition;
518,528c1830,1840
<
<
<
<
<
< IF ( ( (BITAND( ENV.ENVFLAGS, SYS.ODCICONST.ROWMIGRATION)
< = SYS.ODCICONST.ROWMIGRATION) AND
< (BITAND( ENV.ENVFLAGS, SYS.ODCICONST.INDEXKEYCHANGED)
< = SYS.ODCICONST.INDEXKEYCHANGED) ) OR
< (BITAND( ENV.ENVFLAGS, SYS.ODCICONST.ROWMIGRATION)
< <> SYS.ODCICONST.ROWMIGRATION) ) THEN
---
> /* see if this tg_is is referred to by any other layer in the relation
> table for each parent layer that has this layer as the child layer
> count the rows in relation tables pointing to this tg_id
> if count > 0 then this violates the hierarchical constraint */
> -- do this only if this is not a row migration case
> IF ( ( (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> = SYS.ODCIConst.RowMigration) AND
> (bitand( env.EnvFlags, SYS.ODCIConst.IndexKeyChanged)
> = SYS.ODCIConst.IndexKeyChanged) ) OR
> (bitand( env.EnvFlags, SYS.ODCIConst.RowMigration)
> <> SYS.ODCIConst.RowMigration) ) THEN
530,531c1842,1843
< IF (RID IS NOT NULL) THEN
< EXECUTE IMMEDIATE
---
> IF (rid IS NOT NULL) THEN
> EXECUTE IMMEDIATE
533,534c1845,1846
< '(a '||TOPOLOGY||'_REL_LID$ ) */ count(*) ' ||
< 'from mdsys.user_sdo_topo_info b, ' || TOPOLOGY || '_RELATION$ a ' ||
---
> '(a '||topology||'_REL_LID$ ) */ count(*) ' ||
> 'from mdsys.user_sdo_topo_info b, ' || topology || '_RELATION$ a ' ||
539,541c1851,1853
< INTO CNT USING OLDVAL.TOPOLOGY_ID, ABS(OLDVAL.TG_LAYER_ID), OLDVAL.TG_ID;
<
< IF (CNT > 0) THEN
---
> INTO cnt USING oldval.topology_id, abs(oldval.tg_layer_id), oldval.tg_id;
>
> IF (cnt > 0) THEN
543,549c1855,1861
<
<
< ISVERSIONED := 0;
< VER_STATUS := NULL;
< IDX_COLUMNS := IA.INDEXCOLS;
< TABLE_NAME := IDX_COLUMNS(1).TABLENAME;
< TABLE_NAME := SUBSTR(TABLE_NAME, 1, LENGTH(TABLE_NAME)-3);
---
> /* this is hierarchical case */
> /* setup the variables for WM check bug 9206217*/
> isVersioned := 0;
> ver_status := NULL;
> idx_columns := ia.IndexCols;
> table_name := idx_columns(1).TableName;
> table_name := substr(table_name, 1, length(table_name)-3);
554,555c1866,1867
< INTO ISVERSIONED
< USING IDX_COLUMNS(1).TABLESCHEMA, TABLE_NAME;
---
> INTO isVersioned
> USING idx_columns(1).tableschema, table_name;
557c1869
< IF (ISVERSIONED > 0) THEN
---
> IF (isVersioned > 0) THEN
562c1874
< INTO VER_STATUS USING IDX_COLUMNS(1).TABLESCHEMA, TABLE_NAME;
---
> INTO ver_status USING idx_columns(1).tableschema, table_name;
564,565c1876,1877
<
< EXECUTE IMMEDIATE
---
> /* need more checks if this is version enabled topology */
> EXECUTE IMMEDIATE
568c1880,1883
< INTO OLD_SP;
---
> INTO old_sp;
>
> EXECUTE IMMEDIATE
> 'select wmsys.lt.getworkspace from SYS.DUAL' INTO old_ws;
570,577c1885,1889
< EXECUTE IMMEDIATE
< 'select wmsys.lt.getworkspace from SYS.DUAL' INTO OLD_WS;
<
< EXECUTE IMMEDIATE
< 'select parent_workspace, parent_savepoint' ||
< ' from sys.all_workspaces' ||
< ' where workspace = dbms_wm.getworkspace '
< INTO PARENT_WS, PARENT_SP;
---
> EXECUTE IMMEDIATE
> 'select parent_workspace, parent_savepoint' ||
> ' from wmsys.all_workspaces' ||
> ' where workspace = dbms_wm.getworkspace '
> INTO parent_ws, parent_sp;
579c1891
< IF (PARENT_SP IS NOT NULL) THEN
---
> IF (parent_sp IS NOT NULL) THEN
583c1895
< USING PARENT_WS, PARENT_SP;
---
> USING parent_ws, parent_sp;
586,587c1898,1899
< CNT := -1;
< EXECUTE IMMEDIATE 'select count(*) from ' || TOPOLOGY ||
---
> cnt := -1;
> EXECUTE IMMEDIATE 'select count(*) from ' || topology ||
589c1901
< INTO CNT USING ABS(FEATURE_L_ID), FEATURE_ID;
---
> INTO cnt USING abs(feature_L_id), feature_id;
593,595c1905,1907
< USING OLD_WS;
<
< IF (OLD_SP <> 'LATEST') THEN
---
> USING old_ws;
>
> IF (old_sp <> 'LATEST') THEN
598c1910
< USING OLD_SP;
---
> USING old_sp;
601,602c1913,1914
< IF ( (CNT = 0) AND (VER_STATUS <> 'DV') ) THEN
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199,
---
> IF ( (cnt = 0) AND (ver_status <> 'DV') ) THEN
> mderr.raise_md_error('MD', 'SDO', -13199,
604c1916
< RETURN SYS.ODCICONST.ERROR;
---
> RETURN SYS.ODCIConst.Error;
608,609c1920,1921
< BEGIN
< MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199,
---
> BEGIN
> mderr.raise_md_error('MD', 'SDO', -13199,
611c1923
< RETURN SYS.ODCICONST.ERROR;
---
> RETURN SYS.ODCIConst.Error;
613c1925
< END IF;
---
> END IF; /* isVersioned */
615,616c1927,1928
< END IF;
< END IF;
---
> END IF; /* cnt > 0 */
> END IF; /* RID is not NULL */
619,622c1931,1934
<
< IF (RID IS NOT NULL) THEN
< IDX_TAB := IA.INDEXSCHEMA||'.'||IDX_TAB;
< STMT := 'DELETE '|| SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(IDX_TAB) ||
---
> -- delete from the index table
> IF (rid is not NULL) THEN
> idx_tab := ia.IndexSchema||'.'||idx_tab;
> stmt := 'DELETE '|| SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(idx_tab) ||
625c1937
< EXECUTE IMMEDIATE STMT USING FEATURE_ID, RID;
---
> EXECUTE IMMEDIATE stmt USING feature_id, rid;
628c1940
< RETURN SYS.ODCICONST.SUCCESS;
---
> RETURN SYS.ODCIConst.Success;
631,636c1943,1948
< FUNCTION ISVERSIONED(TOPOLOGY IN VARCHAR2) RETURN INTEGER IS
< TOPO_NAME VARCHAR2(130);
< OWNER VARCHAR2(130);
< STMT VARCHAR2(200);
< VERSIONEDTOPOLOGY INTEGER;
< OWMINSTALLED INTEGER;
---
> FUNCTION isversioned(topology IN VARCHAR2) return integer IS
> topo_name varchar2(130);
> owner varchar2(130);
> stmt varchar2(200);
> versionedTopology integer;
> owmInstalled integer;
638,640c1950,1952
< MDSYS.SDO_TOPO_METADATA.EXTRACT_TOPO_OWNER(
< NLS_UPPER(SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(TOPOLOGY)), OWNER,TOPO_NAME);
< VERSIONEDTOPOLOGY := 0;
---
> mdsys.SDO_TOPO_METADATA.extract_topo_owner(
> nls_upper(SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(topology)), owner,topo_name);
> versionedTopology := 0;
642c1954
< SELECT MDSYS.SDO_OWM_INSTALLED INTO OWMINSTALLED FROM SYS.DUAL;
---
> SELECT MDSYS.SDO_OWM_INSTALLED INTO owmInstalled FROM SYS.DUAL;
644,645c1956,1957
< IF ( OWMINSTALLED > 0 ) THEN
< STMT := ' select count(*) ' ||
---
> IF ( owmInstalled > 0 ) THEN
> stmt := ' select count(*) ' ||
648,649c1960,1961
< EXECUTE IMMEDIATE STMT INTO VERSIONEDTOPOLOGY
< USING OWNER, SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(TOPO_NAME) || '_NODE$';
---
> EXECUTE IMMEDIATE stmt INTO versionedTopology
> USING owner, SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(topo_name) || '_NODE$';
652c1964
< RETURN VERSIONEDTOPOLOGY;
---
> RETURN versionedTopology;
655c1967,1968
< END SDO_TPIDX;
---
> END sdo_tpidx;
>
22a23 > sqlrc1 SYS_REFCURSOR; 45c46 < OPEN sqlrc FOR sel_txt using deq_user, queue_name; --- > sqlrc1 := dbms_aq_sub.get_sub_cursor(queue_schema, deq_user, queue_table, queue_name, qtab_flags); 47,48c48,49 < FETCH sqlrc INTO sub_name, sub_addr, sub_proto,sub_trans, sub_type, sub_rule; < EXIT WHEN sqlrc%NOTFOUND; --- > FETCH sqlrc1 INTO sub_name, sub_addr, sub_proto,sub_trans, sub_type, sub_rule; > EXIT WHEN sqlrc1%NOTFOUND; 51a53 > CLOSE sqlrc1; 59c61 < 'WHERE queue_id = :1 and '|| --- > 'WHERE queue_id = :1 and ' || 61a64 > 74a78 > CLOSE sqlrc; 83c87,88 < OPEN sqlrc FOR sel_txt using queue_name; --- > > sqlrc1 := dbms_aq_sub.get_sub_cursor(queue_schema, deq_user, queue_table, queue_name, qtab_flags); 85,86c90,91 < FETCH sqlrc INTO sub_name, sub_addr, sub_proto, sub_trans, sub_type, sub_rule; < EXIT WHEN sqlrc%NOTFOUND; --- > FETCH sqlrc1 INTO sub_name, sub_addr, sub_proto, sub_trans, sub_type, sub_rule; > EXIT WHEN sqlrc1%NOTFOUND; 89a95 > CLOSE sqlrc1;
100c100,101 < IFJMS IN BOOLEAN DEFAULT FALSE); --- > IFJMS IN BOOLEAN DEFAULT FALSE, > INVOKER IN VARCHAR2 DEFAULT NULL); 113c114,115 < PURGE_CONDITION IN VARCHAR2); --- > PURGE_CONDITION IN VARCHAR2, > INVOKER IN VARCHAR2 DEFAULT NULL);
0a1,10 > PACKAGE dbms_aq_sub AUTHID CURRENT_USER AS > > FUNCTION get_sub_cursor(schema IN VARCHAR2, > dquser IN VARCHAR2, > qtname IN VARCHAR2, > qname IN VARCHAR2, > qtflags IN BINARY_INTEGER) > RETURN SYS_REFCURSOR; > END dbms_aq_sub; >
120c120 < REPORT_INTERNAL_VERSION CONSTANT VARCHAR2(64) := '42'; --- > REPORT_INTERNAL_VERSION CONSTANT VARCHAR2(64) := '44';
161c161 < the specified retention. Default value is 31 days. --- > the specified retention. Default value is 373 days. 175c175,177 < NULL (interpreted as user default tablespace). --- > NULL. By default auto indexes are created in the > default tablespace of the owner of the table for > which the index is being created. 185,188c187,200 < 'AUTO_INDEX_SPACE_BUDGET' - Percent of user default < tablespace that can be used for auto index. This is < ignored if 'AUTO_INDEX_DEFAULT_TABLESPACE' has been < set to a valid value. Default value is NULL. --- > 'AUTO_INDEX_SPACE_BUDGET' - Percent of space used > by auto indexes over total space used by all objects > in the tablespace. Default is 50. i.e. Auto indexing > will use up to 50% of the total space used by all > objects in the tablespace. In other words, if X is > the total space consumed by auto indexes and Y is the > total space consumed by all objects including auto > indexes, the ratio (X/Y)*100 should be <= 50. 100 is > a special value. If 100 is specified, auto indexing > will use up all space available in tablespace. This > parameter is ignored if AUTO_INDEX_DEFAULT_TABLESPACE > is specified. if it is specified, auto indexing will > use up all space available in the tablespace specified > by AUTO_INDEX_DEFAULT_TABLESPACE. 251d262 < 255,258c266,273 < Drops indexes that are not used for constraints for given (optional) < schema and table. If no schema is given, all indexes which the user has < priviledges on will be dropped. If no table is given, all indexes within < the given schema will be dropped. --- > Drops indexes that are not used for constraints for given > schema and table. > If OWNER is explicitly set to null and TABLE_NAME is explicitly set to > null all secondary indexes which the user has privileges on will be > dropped. > > If OWNER is explicitly specified and TABLE_NAME is set to null, all > secondary indexes within the given schema will be dropped. 261,262c276,277 < ownname - schema name (IN) < tabname - table name (IN) --- > owner - schema name (IN) > table_name - table name (IN) 273,274c288,326 < procedure drop_secondary_indexes(ownname varchar2 default null, < tabname varchar2 default null); --- > procedure drop_secondary_indexes( > owner varchar2, > table_name varchar2); > > /* > Procedure: drop_auto_indexes > > Drops indexes created by auto index task. > > If OWNER is explicitly set to null and INDEX_NAME is explicitly set to null > all auto indexes which the user has privileges on will be dropped. > > If OWNER is explicitly specified and INDEX_NAME is set to null, all auto > indexes within the given schema will be dropped. The dropped indexes are > not recreated automatically by the system by default. > Specify allow_recreate argument 'TRUE' to change this behavior. > > If the index to be dropped does not exist, the procedure simply mark the > index to be allowed to be recreated or not based on allow_recreate param > > Parameters: > owner - name of the owner of the index (IN) > index_name - index name (IN) - - (NO DEFAULT VALUE) > allow_recreate - allow/disallow automatic creation of the > dropped index again (IN) > > Exceptions: > > Notes: > > Examples: > > Returns: > Nothing. > */ > procedure drop_auto_indexes( > owner varchar2, > index_name varchar2, > allow_recreate boolean default false);
86,90d85 < ERR_INVALID_PARAM_NAME CONSTANT NUMBER := -38133; < ERR_INVALID_PARAM_VALUE CONSTANT NUMBER := -38134; < < < 545a541,580 > > > > > > > > > > > > > > > > > > > > FUNCTION AUTO_INDEX_ALLOW(OPT_ENV RAW) > RETURN NUMBER; > > > > > > > > > > > > > > > > PROCEDURE SET_DROPPED_INDEX_STATUS( > OWNER IN DBMS_ID, > INDEX_NAME IN DBMS_ID, > ALLOW_RECREATE IN BOOLEAN);
2c2,3 < ACCESSIBLE BY (DBMS_AWR_REPORT_LAYOUT, DBMS_SWRF_REPORT_INTERNAL) --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT, > PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL)
12c12
< bannerVersion CONSTANT VARCHAR2(15) := '19.05.00.00';
---
> bannerVersion CONSTANT VARCHAR2(15) := '19.06.00.00';
24,26c24,26
< fsn CONSTANT NUMBER := instr('19.05.00.00', '.');
< msn CONSTANT NUMBER := instr('19.05.00.00', '.', fsn + 1);
< psn CONSTANT NUMBER := instr('19.05.00.00', '.', msn + 1);
---
> fsn CONSTANT NUMBER := instr('19.06.00.00', '.');
> msn CONSTANT NUMBER := instr('19.06.00.00', '.', fsn + 1);
> psn CONSTANT NUMBER := instr('19.06.00.00', '.', msn + 1);
29c29
< to_number(substr('19.05.00.00', 1, fsn - 1));
---
> to_number(substr('19.06.00.00', 1, fsn - 1));
31c31
< to_number(substr('19.05.00.00', fsn + 1, msn - fsn - 1));
---
> to_number(substr('19.06.00.00', fsn + 1, msn - fsn - 1));
33c33
< to_number(substr('19.05.00.00', msn + 1, psn - msn - 1));
---
> to_number(substr('19.06.00.00', msn + 1, psn - msn - 1));
35c35
< to_number(substr('19.05.00.00', psn + 1));
---
> to_number(substr('19.06.00.00', psn + 1));
12c12
< bannerVersion CONSTANT VARCHAR2(15) := '19.04.01.00';
---
> bannerVersion CONSTANT VARCHAR2(15) := '19.04.02.00';
24,26c24,26
< fsn CONSTANT NUMBER := instr('19.04.01.00', '.');
< msn CONSTANT NUMBER := instr('19.04.01.00', '.', fsn + 1);
< psn CONSTANT NUMBER := instr('19.04.01.00', '.', msn + 1);
---
> fsn CONSTANT NUMBER := instr('19.04.02.00', '.');
> msn CONSTANT NUMBER := instr('19.04.02.00', '.', fsn + 1);
> psn CONSTANT NUMBER := instr('19.04.02.00', '.', msn + 1);
29c29
< to_number(substr('19.04.01.00', 1, fsn - 1));
---
> to_number(substr('19.04.02.00', 1, fsn - 1));
31c31
< to_number(substr('19.04.01.00', fsn + 1, msn - fsn - 1));
---
> to_number(substr('19.04.02.00', fsn + 1, msn - fsn - 1));
33c33
< to_number(substr('19.04.01.00', msn + 1, psn - msn - 1));
---
> to_number(substr('19.04.02.00', msn + 1, psn - msn - 1));
35c35
< to_number(substr('19.04.01.00', psn + 1));
---
> to_number(substr('19.04.02.00', psn + 1));
12c12
< bannerVersion CONSTANT VARCHAR2(15) := '19.05.00.00';
---
> bannerVersion CONSTANT VARCHAR2(15) := '19.05.01.00';
24,26c24,26
< fsn CONSTANT NUMBER := instr('19.05.00.00', '.');
< msn CONSTANT NUMBER := instr('19.05.00.00', '.', fsn + 1);
< psn CONSTANT NUMBER := instr('19.05.00.00', '.', msn + 1);
---
> fsn CONSTANT NUMBER := instr('19.05.01.00', '.');
> msn CONSTANT NUMBER := instr('19.05.01.00', '.', fsn + 1);
> psn CONSTANT NUMBER := instr('19.05.01.00', '.', msn + 1);
29c29
< to_number(substr('19.05.00.00', 1, fsn - 1));
---
> to_number(substr('19.05.01.00', 1, fsn - 1));
31c31
< to_number(substr('19.05.00.00', fsn + 1, msn - fsn - 1));
---
> to_number(substr('19.05.01.00', fsn + 1, msn - fsn - 1));
33c33
< to_number(substr('19.05.00.00', msn + 1, psn - msn - 1));
---
> to_number(substr('19.05.01.00', msn + 1, psn - msn - 1));
35c35
< to_number(substr('19.05.00.00', psn + 1));
---
> to_number(substr('19.05.01.00', psn + 1));
24a25 > FUNCTION GETMAXVCSIZE RETURN NUMBER;
2c2 < ACCESSIBLE BY (DBMS_MVIEW_STATS) IS --- > ACCESSIBLE BY (PACKAGE DBMS_MVIEW_STATS) IS
3715a3716,3732 > -- NOTE: the below 3 functions for listing and retrieving PDBs within > -- a CDB are only to be called at the auxiliary instance. > -- Do not call using recovery catalog. > > PROCEDURE listPdbs; > -- Open cursor for pdbs in a target cdb > > FUNCTION listGetPdb( > pdbName OUT VARCHAR2, > pdbId OUT NUMBER, > pdbGuid OUT VARCHAR2) > RETURN NUMBER; > -- Get pdbs for given cdb root > > PROCEDURE endListPdbs; > -- Close cursor for pdbs in a target cdb >
13c13 < '19.5.0.0.0'; --- > '19.5.1.0.0';
13c13 < '19.4.1.0.0'; --- > '19.4.2.0.0';
13c13 < '19.5.0.0.0'; --- > '19.6.0.0.0';
39a40,49 > > > SPACE_BUDGET_PERCENT CONSTANT VARCHAR2(21) := 'SPACE_BUDGET_PERCENT'; > PLAN_RETENTION_WEEKS CONSTANT VARCHAR2(21) := 'PLAN_RETENTION_WEEKS'; > SPM_TRACING CONSTANT VARCHAR2(12) := 'SPM_TRACING'; > > > SPACE_BUDGET_PERCENT_DEFAULT CONSTANT NUMBER := 10; > PLAN_RETENTION_WEEKS_DEFAULT CONSTANT NUMBER := 53; > SPM_TRACING_DEFAULT CONSTANT NUMBER := 0; 65a76,77 > > 423d434 < 436c447,450 < PROCEDURE LOAD_AUTO_EVOLVE_TASK_CONFIG; --- > > > > PROCEDURE LOAD_SPM_SMB_CONFIG;
2c2 < ACCESSIBLE BY (DBMS_SYNC_REFRESH) IS --- > ACCESSIBLE BY (PACKAGE DBMS_SYNC_REFRESH) IS
2,5c2,5 < ACCESSIBLE BY (DBMS_WORKLOAD_REPOSITORY < ,DBMS_SWRF_REPORT_INTERNAL < ,DBMS_AWR_REPORT_LAYOUT < ,DBMS_ASH_INTERNAL) AS --- > ACCESSIBLE BY (PACKAGE SYS.DBMS_WORKLOAD_REPOSITORY > ,PACKAGE SYS.DBMS_SWRF_REPORT_INTERNAL > ,PACKAGE SYS.DBMS_AWR_REPORT_LAYOUT > ,PACKAGE SYS.DBMS_ASH_INTERNAL) AS
11c11 < TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512); --- > TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767); 44a45,106 > PROCEDURE AQ_INTERNAL_EXESTMT( > SQL_STMT IN VARCHAR2, > OPCODE IN NUMBER DEFAULT NULL, > BYPASS_DV IN BOOLEAN DEFAULT TRUE, > BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE, > IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL, > IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE , > OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE , > OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_RAW_PARAM1 IN RAW DEFAULT NULL, > IN_RAW_PARAM2 IN RAW DEFAULT NULL, > IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL, > IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL, > IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL, > IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL, > IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, > IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, > OUT_RAW_PARAM1 OUT RAW, > OUT_RAW_PARAM2 OUT RAW, > OUT_BINT_PARAM1 OUT BINARY_INTEGER , > OUT_BINT_PARAM2 OUT BINARY_INTEGER, > OUT_INT_PARAM1 OUT PLS_INTEGER, > OUT_INT_PARAM2 OUT PLS_INTEGER, > OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE, > OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE) > IS EXTERNAL > NAME "aq_internal_exeStmt" > WITH CONTEXT > PARAMETERS(CONTEXT, > SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2, > OPCODE OCINUMBER, OPCODE INDICATOR SB2, > BYPASS_DV SB4, BYPASS_DV INDICATOR SB2, > BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2, > IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2, > IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2, > IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2, > IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2, > OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2, > OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2, > OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2, > OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2, > IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2, > IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2, > IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2, > IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2, > IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2, > IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2, > IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2, > IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2, > OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2, > OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2, > OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2, > OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2, > OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2, > OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2, > OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2, > OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2) > LIBRARY DBMS_AQINT_LIB; 526c588 < IGNORE_DDL_DML_ERROR IN BOOLEAN DEFAULT FALSE) --- > IGNORE_DDL_DML_ERROR IN BOOLEAN DEFAULT FALSE) 707,768d768 < PROCEDURE AQ_INTERNAL_EXESTMT( < SQL_STMT IN VARCHAR2, < OPCODE IN NUMBER DEFAULT NULL, < BYPASS_DV IN BOOLEAN DEFAULT TRUE, < BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE, < IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL, < IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE, < OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE, < OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < IN_RAW_PARAM1 IN RAW DEFAULT NULL, < IN_RAW_PARAM2 IN RAW DEFAULT NULL, < IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL, < IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL, < IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL, < IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL, < IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, < IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, < OUT_RAW_PARAM1 OUT RAW, < OUT_RAW_PARAM2 OUT RAW, < OUT_BINT_PARAM1 OUT BINARY_INTEGER, < OUT_BINT_PARAM2 OUT BINARY_INTEGER, < OUT_INT_PARAM1 OUT PLS_INTEGER, < OUT_INT_PARAM2 OUT PLS_INTEGER, < OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE, < OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE) < IS EXTERNAL < NAME "aq_internal_exeStmt" < WITH CONTEXT < PARAMETERS(CONTEXT, < SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2, < OPCODE OCINUMBER, OPCODE INDICATOR SB2, < BYPASS_DV SB4, BYPASS_DV INDICATOR SB2, < BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2, < IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2, < IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2, < IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2, < IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2, < OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2, < OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2, < OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2, < OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2, < IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2, < IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2, < IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2, < IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2, < IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2, < IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2, < IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2, < IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2, < OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2, < OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2, < OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2, < OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2, < OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2, < OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2, < OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2, < OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2) < LIBRARY DBMS_AQINT_LIB;
56c56
< TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512);
---
> TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
107a108,199
> SCH_JOB_NOT_SCHEDULED EXCEPTION;
> PRAGMA EXCEPTION_INIT(SCH_JOB_NOT_SCHEDULED, -27476);
>
> INDEX_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(INDEX_DOES_NOT_EXIST, -1418);
>
> NAME_IN_USE EXCEPTION;
> PRAGMA EXCEPTION_INIT(NAME_IN_USE, -955);
>
> INVALID_COLUMN EXCEPTION;
> PRAGMA EXCEPTION_INIT(INVALID_COLUMN, -904);
>
> COLUMN_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(COLUMN_EXISTS, -1430);
>
> PRIMARY_KEY_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(PRIMARY_KEY_EXISTS, -2260);
>
> COMPILE_ERROR EXCEPTION;
> PRAGMA EXCEPTION_INIT(COMPILE_ERROR, -24344);
>
> SEQUENCE_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(SEQUENCE_DOES_NOT_EXIST, -2289);
>
> INSUFFICIENT_PRIVILEGE EXCEPTION;
> PRAGMA EXCEPTION_INIT(INSUFFICIENT_PRIVILEGE, -1031);
>
> PROCEDURE AQ_INTERNAL_EXESTMT(
> SQL_STMT IN VARCHAR2,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
> OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
> OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
> IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
> IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
> IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> OUT_RAW_PARAM1 OUT RAW,
> OUT_RAW_PARAM2 OUT RAW,
> OUT_BINT_PARAM1 OUT BINARY_INTEGER,
> OUT_BINT_PARAM2 OUT BINARY_INTEGER,
> OUT_INT_PARAM1 OUT PLS_INTEGER,
> OUT_INT_PARAM2 OUT PLS_INTEGER,
> OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
> OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
> IS EXTERNAL
> NAME "aq_internal_exeStmt"
> WITH CONTEXT
> PARAMETERS(CONTEXT,
> SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
> OPCODE OCINUMBER, OPCODE INDICATOR SB2,
> BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
> BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
> IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
> IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
> IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
> IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
> OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
> OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
> OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
> OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
> IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
> IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
> IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
> IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
> IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
> IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
> IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
> IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
> OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
> OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
> OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
> OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
> OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
> OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
> OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
> OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
> LIBRARY DBMS_AQINT_LIB;
>
>
>
108a201,328
> PROCEDURE EXECUTE_STMT_IN_KERNEL_CURSOR(
> SQL_STMT IN VARCHAR2,
> IGNORE_DDL IN BOOLEAN DEFAULT TRUE,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL) IS
>
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW_PRM1 RAW(32737);
> OUT_RAW_PRM2 RAW(32737);
> OUT_BINT_PRM1 BINARY_INTEGER;
> OUT_BINT_PRM2 BINARY_INTEGER;
> OUT_INT_PRM1 PLS_INTEGER;
> OUT_INT_PRM2 PLS_INTEGER;
> OUT_TIME_PRM1 TIMESTAMP WITH TIME ZONE;
> OUT_TIME_PRM2 TIMESTAMP WITH TIME ZONE;
> BEGIN
> AQ_INTERNAL_EXESTMT(
> SQL_STMT => SQL_STMT,
> OPCODE => OPCODE,
> BYPASS_DV => BYPASS_DV,
> BYPASS_AUDIT => BYPASS_AUDIT,
> IN_STR_ARRAY => IN_STR_ARRAY,
> IN_STRPOS_ARRAY=> IN_STRPOS_ARRAY,
> IN_NUM_ARRAY => IN_NUM_ARRAY,
> IN_NUMPOS_ARRAY=> IN_NUMPOS_ARRAY,
> IN_RAW_PARAM1 => IN_RAW_PARAM1,
> IN_RAW_PARAM2 => IN_RAW_PARAM2,
> IN_TIME_PARAM1 => IN_TIME_PARAM1,
> IN_TIME_PARAM2 => IN_TIME_PARAM2,
> OUT_STR_ARRAY => OUT_STR_ARR,
> OUT_STRPOS_ARRAY=> NULL,
> OUT_NUM_ARRAY => OUT_NUM_ARR,
> OUT_NUMPOS_ARRAY=> NULL,
> IN_BINT_PARAM1 => NULL,
> IN_BINT_PARAM2 => NULL,
> IN_INT_PARAM1 => NULL,
> IN_INT_PARAM2 => NULL,
> OUT_RAW_PARAM1 => OUT_RAW_PRM1,
> OUT_RAW_PARAM2 => OUT_RAW_PRM2,
> OUT_BINT_PARAM1=> OUT_BINT_PRM1,
> OUT_BINT_PARAM2=> OUT_BINT_PRM2,
> OUT_INT_PARAM1 => OUT_INT_PRM1,
> OUT_INT_PARAM2 => OUT_INT_PRM2,
> OUT_TIME_PARAM1=> OUT_TIME_PRM1,
> OUT_TIME_PARAM2=> OUT_TIME_PRM1);
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (IGNORE_DDL = FALSE) THEN
> RAISE;
> END IF;
> END;
>
>
>
>
>
> PROCEDURE EXECUTE_STMTCUSR(
> STMT IN VARCHAR2,
> CURRENT_USER IN VARCHAR2 DEFAULT NULL,
> IGNORE_DDL_DML_ERROR IN BOOLEAN DEFAULT FALSE,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE)
> IS
> DUMMY VARCHAR2(32767);
> STREAMS_CAPTURE_OFF BOOLEAN;
> BEGIN
> STREAMS_CAPTURE_OFF := DBMS_AQADM_SYSCALLS.KWQA_3GL_ISSTREAMSCAPTUREOFF;
>
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(TRUE);
> END IF;
>
> DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmtCusr: '|| STMT,
> EVENT_LEVEL => DBMS_AQADM_SYS.TRACE_FLAG_AQ_DEBUG);
>
> IF (CURRENT_USER IS NOT NULL) THEN
> EXECUTE_STMT_IN_KERNEL_CURSOR(SQL_STMT => STMT, OPCODE => 256, BYPASS_DV => BYPASS_DV,
> IN_STR_ARRAY => STR_ARRAY_TYPE(CURRENT_USER));
> ELSE
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
> END IF;
>
>
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF (IGNORE_DDL_DML_ERROR = FALSE) THEN
> RAISE;
> ELSE
> DBMS_SYSTEM.KSDWRT(1, 'Encountered error when executing : '|| STMT);
> END IF;
> WHEN NO_DATA_FOUND THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF (IGNORE_DDL_DML_ERROR = FALSE) THEN
> RAISE;
> ELSE
> DBMS_SYSTEM.KSDWRT(1, 'Encountered error when executing : '|| STMT);
> END IF;
> WHEN OBJECT_ALREADY_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> DBMS_SYSTEM.KSDWRT(1, 'Encountered error when executing : '|| STMT);
> IF (IGNORE_DDL_DML_ERROR = FALSE) THEN
> RAISE;
> END IF;
> WHEN OTHERS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> RAISE;
> END;
139a360,385
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> FUNCTION KWQAEXGCUR(STMT IN VARCHAR2,
> BND_ARRAY IN OUT AQ$_BND_ARRAY,
> USER IN VARCHAR2 DEFAULT NULL,
> FLAGS IN PLS_INTEGER DEFAULT NULL,
> OPCODE IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> PRAGMA INTERFACE(C, KWQAEXGCUR);
164a411,420
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW1 RAW(32737);
> OUT_RAW2 RAW(32737);
> OUT_BINT1 BINARY_INTEGER;
> OUT_BINT2 BINARY_INTEGER;
> OUT_INT1 PLS_INTEGER;
> OUT_INT2 PLS_INTEGER;
> TM1 TIMESTAMP WITH TIME ZONE;
> TM2 TIMESTAMP WITH TIME ZONE;
167c423,432
< KWQA_3GL_EXECUTESTMTBNDDFN(STMT, NULL, NULL, 0, 0, OUTVAR);
---
> OUT_STR_ARR := STR_ARRAY_TYPE();
> OUT_STR_ARR.EXTEND(1);
> AQ_INTERNAL_EXESTMT(SQL_STMT => STMT, OUT_STR_ARRAY => OUT_STR_ARR,
> OUT_NUM_ARRAY => OUT_NUM_ARR, OUT_RAW_PARAM1 => OUT_RAW1,
> OUT_RAW_PARAM2 => OUT_RAW2, OUT_BINT_PARAM1 => OUT_BINT1,
> OUT_BINT_PARAM2 => OUT_BINT2, OUT_INT_PARAM1 => OUT_INT1,
> OUT_INT_PARAM2 => OUT_INT2, OUT_TIME_PARAM1 => TM1,
> OUT_TIME_PARAM2 => TM2);
>
> OUTVAR := OUT_STR_ARR(1);
252c517,605
<
---
>
>
>
>
>
>
>
>
>
>
> PROCEDURE EXECUTE_STMT3(STMT IN VARCHAR2,
> IGNORE_DDL_ERROR IN BOOLEAN DEFAULT FALSE,
> IGNORE_COMPERR IN BOOLEAN DEFAULT FALSE) IS
>
> STREAMS_CAPTURE_OFF BOOLEAN;
>
> BEGIN
> DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmt2: '|| STMT);
> STREAMS_CAPTURE_OFF := DBMS_AQADM_SYSCALLS.KWQA_3GL_ISSTREAMSCAPTUREOFF;
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(TRUE);
> END IF;
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN INDEX_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN NAME_IN_USE THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN INVALID_COLUMN THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN COLUMN_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN PRIMARY_KEY_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN COMPILE_ERROR THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_COMPERR THEN
> RAISE;
> END IF;
> WHEN SEQUENCE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN OTHERS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> RAISE;
> END;
724c1077
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
729c1082
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
733c1086
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
737c1090
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
759c1112
< DBMS_AQADM_INV.EXECUTE_STMT(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
763c1116
< DBMS_AQADM_INV.EXECUTE_STMT(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
767c1120
< DBMS_AQADM_INV.EXECUTE_STMT(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
941,942c1294,1295
<
< SQLCURSOR NUMBER;
---
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
947,948d1299
< SQLCURSOR := DBMS_SQL.OPEN_CURSOR;
<
953,960d1303
< DBMS_SYS_SQL.PARSE_AS_USER( SQLCURSOR, ' BEGIN ' ||
< 'sys.dbms_aqadm.get_type_info@' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT ||
< DBMS_ASSERT.QUALIFIED_SQL_NAME(CANON_DEST) || DQT) ||
< ' (:schema, :qname, TRUE, :rc, :toid, :version, :tds, :qs, ' ||
< ' :ntw); '|| ' END;', DBMS_SQL.V7, USERID);
<
< WRITE_TRACE('get_remote_qtype_info_ttc:binding remote get_type info') ;
962,969c1305
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'rc', RC);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'schema', DEST_SCHEMA);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'qname', DEST_QNAME);
< DBMS_SQL.BIND_VARIABLE_RAW(SQLCURSOR, 'toid', DEST_TOID, 16);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'version', DEST_VERSION);
< DBMS_SQL.BIND_VARIABLE_RAW(SQLCURSOR, 'tds', DEST_TDS, 32000);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'qs', QUEUE_STYLE, 30);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'ntw', NETWORK_NAME, M_NETWORK_LEN);
---
> WRITE_TRACE('get_remote_qtype_info_ttc:binding remote get_type info') ;
971c1307,1324
< WRITE_TRACE('get_remote_qtype_info_ttc:executing remote get_type info') ;
---
>
> BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => DEST_SCHEMA),
> AQ$_BND(STR_VAL => DEST_QNAME),
> AQ$_BND(NUM_VAL => RC, BMODE => 1),
> AQ$_BND(RAW_VAL => DEST_TOID, BMODE => 1, SZ => 16),
> AQ$_BND(NUM_VAL => DEST_VERSION, BMODE => 1),
> AQ$_BND(RAW_VAL => DEST_TDS, BMODE => 1, SZ => 32000),
> AQ$_BND(STR_VAL => QUEUE_STYLE, BMODE => 1, SZ => 30),
> AQ$_BND(STR_VAL => NETWORK_NAME, BMODE => 1, SZ => M_NETWORK_LEN));
>
> WRITE_TRACE('get_remote_qtype_info_ttc:executing remote get_type info');
>
> CUR := KWQAEXGCUR(' BEGIN ' ||
> 'sys.dbms_aqadm.get_type_info@' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT ||
> DBMS_ASSERT.QUALIFIED_SQL_NAME(CANON_DEST) || DQT) ||
> ' (:1, :2, TRUE, :3, :4, :5, :6, :7, ' ||
> ' :8); '|| ' END;', BNDS, SRC_SCHEMA, FLAGS => 1);
973c1326
< ROWCOUNT := DBMS_SQL.EXECUTE(SQLCURSOR);
---
> CLOSE CUR;
977,978c1330
< DBMS_SQL.VARIABLE_VALUE(SQLCURSOR, 'rc', RC);
<
---
> RC := BNDS(3).NUM_VAL;
982,983c1334,1335
< DBMS_SQL.VARIABLE_VALUE_RAW(SQLCURSOR, 'toid', DEST_TOID);
< DBMS_SQL.VARIABLE_VALUE(SQLCURSOR, 'version', DEST_VERSION);
---
> DEST_TOID := BNDS(4).RAW_VAL;
> DEST_VERSION := BNDS(5).NUM_VAL;
985c1337
< DBMS_SQL.VARIABLE_VALUE_RAW(SQLCURSOR, 'tds', DEST_TDS);
---
> DEST_TDS := BNDS(6).RAW_VAL;
989,990c1341,1342
< DBMS_SQL.VARIABLE_VALUE(SQLCURSOR, 'qs', QUEUE_STYLE);
< DBMS_SQL.VARIABLE_VALUE(SQLCURSOR, 'ntw', NETWORK_NAME);
---
> QUEUE_STYLE := BNDS(7).STR_VAL;
> NETWORK_NAME := BNDS(8).STR_VAL;
995d1346
< DBMS_SQL.CLOSE_CURSOR(SQLCURSOR);
997,998c1348,1349
< IF DBMS_SQL.IS_OPEN(SQLCURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(SQLCURSOR);
---
> IF (CUR%ISOPEN) THEN
> CLOSE CUR;
1080c1431,1432
< SQLCURSOR NUMBER;
---
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
1085d1436
< SQLCURSOR := DBMS_SQL.OPEN_CURSOR;
1087d1437
< SELECT DBMS_STATS_INTERNAL.GET_USER_NUM(SRC_SCHEMA) INTO USERID FROM DUAL ;
1090,1095c1440
< DBMS_SYS_SQL.PARSE_AS_USER( SQLCURSOR, ' BEGIN ' ||
< 'sys.dbms_aqadm.get_type_info@' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT ||
< DBMS_ASSERT.QUALIFIED_SQL_NAME(CANON_DEST) || DQT) ||
< ' (:schema, :qname, TRUE, :rc, :toid, :version, :tds);' ||
< ' END;', DBMS_SQL.V7, USERID);
---
>
1099,1104c1444,1459
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'rc', RC);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'schema', DEST_SCHEMA);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'qname', DEST_QNAME);
< DBMS_SQL.BIND_VARIABLE_RAW(SQLCURSOR, 'toid', DEST_TOID, 16);
< DBMS_SQL.BIND_VARIABLE(SQLCURSOR, 'version', DEST_VERSION);
< DBMS_SQL.BIND_VARIABLE_RAW(SQLCURSOR, 'tds', DEST_TDS, 32000);
---
>
> BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => DEST_SCHEMA),
> AQ$_BND(STR_VAL => DEST_QNAME),
> AQ$_BND(NUM_VAL => RC, BMODE => 1),
> AQ$_BND(RAW_VAL => DEST_TOID, BMODE => 1, SZ => 16),
> AQ$_BND(NUM_VAL => DEST_VERSION, BMODE => 1),
> AQ$_BND(RAW_VAL => DEST_TDS, BMODE => 1, SZ => 32000));
>
> WRITE_TRACE('get_remote_qtype_info_ttc:executing remote get_type info');
>
> CUR := KWQAEXGCUR(' BEGIN ' ||
> 'sys.dbms_aqadm.get_type_info@' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT ||
> DBMS_ASSERT.QUALIFIED_SQL_NAME(CANON_DEST) || DQT) ||
> ' (:1, :2, TRUE, :3, :4, :5, :6); ' ||
> ' END;', BNDS, SRC_SCHEMA, FLAGS => 1);
1106c1461
< WRITE_TRACE('get_remote_qtype_info_ttc:executing remote get_type info') ;
---
> CLOSE CUR;
1108,1109d1462
< ROWCOUNT := DBMS_SQL.EXECUTE(SQLCURSOR);
<
1112,1113c1465
< DBMS_SQL.VARIABLE_VALUE(SQLCURSOR, 'rc', RC);
<
---
> RC := BNDS(3).NUM_VAL;
1117,1118c1469,1470
< DBMS_SQL.VARIABLE_VALUE_RAW(SQLCURSOR, 'toid', DEST_TOID);
< DBMS_SQL.VARIABLE_VALUE(SQLCURSOR, 'version', DEST_VERSION);
---
> DEST_TOID := BNDS(4).RAW_VAL;
> DEST_VERSION := BNDS(5).NUM_VAL;
1120c1472
< DBMS_SQL.VARIABLE_VALUE_RAW(SQLCURSOR, 'tds', DEST_TDS);
---
> DEST_TDS := BNDS(6).RAW_VAL;
1124d1475
< DBMS_SQL.CLOSE_CURSOR(SQLCURSOR);
1127,1128c1478,1479
< IF DBMS_SQL.IS_OPEN(SQLCURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(SQLCURSOR);
---
> IF (CUR%ISOPEN) THEN
> CLOSE CUR;
1547c1898
< DBMS_AQADM_INV.EXECUTE_STMT('CREATE OR REPLACE' || EDITIONABLESTR
---
> EXECUTE_STMT3('CREATE OR REPLACE' || EDITIONABLESTR
1660c2011
< DBMS_AQADM_INV.EXECUTE_STMT('CREATE OR REPLACE VIEW ' ||
---
> EXECUTE_STMT3('CREATE OR REPLACE VIEW ' ||
1996c2347
< DBMS_AQADM_INV.EXECUTE_STMT(VIEW_TXT || BV_TXT || ' WITH READ ONLY');
---
> EXECUTE_STMT3(VIEW_TXT || BV_TXT || ' WITH READ ONLY');
2225c2576
< DBMS_AQADM_INV.EXECUTE_STMT(VIEW_TXT || BV_TXT || ' WITH READ ONLY');
---
> EXECUTE_STMT3(VIEW_TXT || BV_TXT || ' WITH READ ONLY');
2365c2716,2717
< EXECUTE IMMEDIATE DELSPTXT USING QUEUE;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DELSPTXT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QUEUE));
2371,2432d2722
< PROCEDURE AQ_INTERNAL_EXESTMT(
< SQL_STMT IN VARCHAR2,
< OPCODE IN NUMBER DEFAULT NULL,
< BYPASS_DV IN BOOLEAN DEFAULT TRUE,
< BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
< IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
< IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
< OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
< OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_RAW_PARAM1 IN RAW DEFAULT NULL,
< IN_RAW_PARAM2 IN RAW DEFAULT NULL,
< IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
< IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
< IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
< IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
< IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< OUT_RAW_PARAM1 OUT RAW,
< OUT_RAW_PARAM2 OUT RAW,
< OUT_BINT_PARAM1 OUT BINARY_INTEGER,
< OUT_BINT_PARAM2 OUT BINARY_INTEGER,
< OUT_INT_PARAM1 OUT PLS_INTEGER,
< OUT_INT_PARAM2 OUT PLS_INTEGER,
< OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
< OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
< IS EXTERNAL
< NAME "aq_internal_exeStmt"
< WITH CONTEXT
< PARAMETERS(CONTEXT,
< SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
< OPCODE OCINUMBER, OPCODE INDICATOR SB2,
< BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
< BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
< IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
< IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
< IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
< IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
< OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
< OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
< OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
< OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
< IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
< IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
< IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
< IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
< IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
< IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
< IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
< IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
< OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
< OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
< OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
< OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
< OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
< OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
< OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
< OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
< LIBRARY DBMS_AQINT_LIB;
2545c2835
< KWQA_3GL_EXECUTESTMTBNDDFN(DELETE_SQL, Q_NAME, NULL, 1, 0, OUTVAR);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DELETE_SQL, IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME));
2602c2892
< EXECUTE IMMEDIATE SQL_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SQL_STMT);
2784c3074
< DBMS_AQADM_INV.EXECUTE_STMTCUSR(TABIND_STMT, CURRENT_USER);
---
> EXECUTE_STMTCUSR(TABIND_STMT, CURRENT_USER);
2795c3085
< EXECUTESTMT(SQLSTMT);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SQLSTMT);
3090c3380
< SYS.DBMS_AQADM_INV.EXECUTE_STMT('DROP VIEW SYS.qt' || OBJNO ||
---
> EXECUTE_STMT3('DROP VIEW SYS.qt' || OBJNO ||
3606c3896
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE INDEX ' ||
---
> EXECUTE_STMT3('CREATE INDEX ' ||
3613c3903
< DBMS_ASSERT.ENQUOTE_NAME(TSPACE_NAME, FALSE), FALSE, TRUE);
---
> DBMS_ASSERT.ENQUOTE_NAME(TSPACE_NAME, FALSE), FALSE);
3646c3936
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE INDEX ' ||
---
> EXECUTE_STMT3('CREATE INDEX ' ||
3654c3944
< || DBMS_ASSERT.ENQUOTE_NAME(TSPACE_NAME, FALSE), FALSE, TRUE);
---
> || DBMS_ASSERT.ENQUOTE_NAME(TSPACE_NAME, FALSE), FALSE);
4388c4678
< DBMS_AQADM_INV.EXECUTE_STMTCUSR(CR_Q_TAB_STMT, CURRENT_USER);
---
> EXECUTE_STMTCUSR(CR_Q_TAB_STMT, CURRENT_USER);
4410c4700
< EXECUTE IMMEDIATE CR_Q_TABIDX_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(CR_Q_TABIDX_STMT);
4423c4713
< EXECUTE IMMEDIATE CR_Q_TABIDX_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(CR_Q_TABIDX_STMT);
4447c4737
< DBMS_AQADM_INV.EXECUTE_STMT('CREATE SEQUENCE ' ||
---
> EXECUTE_STMT3('CREATE SEQUENCE ' ||
4537c4827
< EXECUTE IMMEDIATE ' CREATE TABLE ' ||
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(' CREATE TABLE ' ||
4553c4843
< ' (PARTITION P1 VALUES LESS THAN (1)) ' || STORAGE_CLAUSE;
---
> ' (PARTITION P1 VALUES LESS THAN (1)) ' || STORAGE_CLAUSE);
4602c4892
< SYS.DBMS_AQADM_SYSCALLS.EXECUTE_STMT_IN_KERNEL_CURSOR('DROP TABLE ' ||
---
> EXECUTE_STMT_IN_KERNEL_CURSOR('DROP TABLE ' ||
4685c4975
< DBMS_AQADM_INV.EXECUTE_STMTCUSR(CR_DEQLOG_STMT, CURRENT_USER);
---
> EXECUTE_STMTCUSR(CR_DEQLOG_STMT, CURRENT_USER);
4706c4996,4997
< EXECUTE IMMEDIATE CR_DEQLOG_IDX_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(CR_DEQLOG_IDX_STMT);
>
4779c5070
< DBMS_AQADM_INV.EXECUTE_STMTCUSR(CR_DEQLOG_STMT, CURRENT_USER);
---
> EXECUTE_STMTCUSR(CR_DEQLOG_STMT, CURRENT_USER);
4799c5090
< EXECUTE IMMEDIATE CR_DEQLOG_IDX_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(CR_DEQLOG_IDX_STMT);
5020c5311
< DBMS_AQADM_INV.EXECUTE_STMT(CR_SHIDSEQ_STMT);
---
> EXECUTE_STMT3(CR_SHIDSEQ_STMT);
5632c5923
< DBMS_AQADM_INV.EXECUTE_STMT(CR_EX_STMT);
---
> EXECUTE_STMT3(CR_EX_STMT);
5642c5933
< DBMS_AQADM_INV.EXECUTE_STMT(CR_EX_STMT);
---
> EXECUTE_STMT3(CR_EX_STMT);
6530c6821
< EXECUTE IMMEDIATE DEL_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DEL_STMT);
7192c7483
< DBMS_AQADM_INV.EXECUTE_STMT( 'DROP VIEW ' ||
---
> EXECUTE_STMT3( 'DROP VIEW ' ||
7289c7580
< EXECUTE IMMEDIATE 'DROP SEQUENCE ' ||
---
> EXECUTE_STMT_IN_KERNEL_CURSOR('DROP SEQUENCE ' ||
7291c7582
< QT_NAME || '_SEQ';
---
> QT_NAME || '_SEQ');
7313c7604
< SYS.DBMS_AQADM_SYSCALLS.EXECUTE_STMT_IN_KERNEL_CURSOR(DROP_STMT, TRUE);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DROP_STMT, TRUE);
7347c7638
< SYS.DBMS_AQADM_SYSCALLS.EXECUTE_STMT_IN_KERNEL_CURSOR(DROP_STMT, TRUE);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DROP_STMT, TRUE);
7360c7651
< DBMS_AQADM_INV.EXECUTE_STMT( 'DROP VIEW ' ||
---
> EXECUTE_STMT3( 'DROP VIEW ' ||
7492c7783
< DBMS_AQADM_INV.EXECUTE_STMT( 'CREATE TABLE ' ||
---
> EXECUTE_STMT3( 'CREATE TABLE ' ||
7533c7824
< SYS.DBMS_AQADM_SYSCALLS.EXECUTE_STMT_IN_KERNEL_CURSOR('DROP TABLE ' ||
---
> EXECUTE_STMT_IN_KERNEL_CURSOR('DROP TABLE ' ||
8060a8352,8353
> FINDSUB_BNDS AQ$_BND_ARRAY;
> FINDSUB_CUR SYS_REFCURSOR;
8105,8106c8398,8404
<
< EXECUTE IMMEDIATE FINDSUB INTO BUFSUBCNT;
---
>
> FINDSUB_BNDS := AQ$_BND_ARRAY();
> FINDSUB_CUR := KWQAEXGCUR(FINDSUB, FINDSUB_BNDS);
> FETCH FINDSUB_CUR INTO BUFSUBCNT;
> IF (FINDSUB_CUR%NOTFOUND) THEN
> RAISE NO_DATA_FOUND;
> END IF;
8135c8433,8434
< EXECUTE IMMEDIATE UPDATE_SQL USING Q_NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPDATE_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME));
8144,8145c8443,8444
<
< EXECUTE IMMEDIATE DELSPTXT USING Q_NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DELSPTXT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME));
8150c8449,8450
< EXECUTE IMMEDIATE STMT_TXT USING QID;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_TXT,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(QID));
10572,10575c10872,10877
< IOT_CURSOR INTEGER;
< UPDATE_CURSOR INTEGER;
< DELETE_CURSOR INTEGER;
< INSERT_CURSOR INTEGER;
---
> IOT_CURSOR SYS_REFCURSOR;
> IOT_BNDS AQ$_BND_ARRAY;
> UPDATE_CURSOR SYS_REFCURSOR;
> UPDATE_BNDS AQ$_BND_ARRAY;
> DELETE_CURSOR SYS_REFCURSOR;
> DELETE_BNDS AQ$_BND_ARRAY;
10580c10882
< MSGROWID ROWID;
---
> MSGROWID UROWID;
10590c10892
< RID ROWID;
---
> RID UROWID;
10601,10606d10902
< IOT_CURSOR := DBMS_SQL.OPEN_CURSOR;
<
<
< DELETE_CURSOR := DBMS_SQL.OPEN_CURSOR;
<
<
10616,10617c10912,10913
< ' WHERE qt.rowid = msg_rowid and ' || ' msg_qname = :qname' ||
< ' and ' || ' appname = :subname' || ' FOR UPDATE ';
---
> ' WHERE qt.rowid = msg_rowid and ' || ' msg_qname = :1' ||
> ' and ' || ' appname = :2' || ' FOR UPDATE ';
10621,10630d10916
< DBMS_SQL.PARSE(IOT_CURSOR, JOIN_TXT, DBMS_SQL.V7);
< DBMS_SQL.BIND_VARIABLE(IOT_CURSOR, 'qname', Q_NAME);
< DBMS_SQL.BIND_VARIABLE(IOT_CURSOR, 'subname', SUBNAME);
< DBMS_SQL.DEFINE_COLUMN_ROWID(IOT_CURSOR, 1, MSGROWID);
< DBMS_SQL.DEFINE_COLUMN(IOT_CURSOR, 2, MSGREFCNT);
< DBMS_SQL.DEFINE_COLUMN(IOT_CURSOR, 3, MSGSTATE);
<
<
< DBMS_SQL.DEFINE_COLUMN(IOT_CURSOR, 4, ENQUEUE_TIME);
< DBMS_SQL.DEFINE_COLUMN(IOT_CURSOR, 5, DELAY);
10633d10918
< UPDATE_CURSOR := DBMS_SQL.OPEN_CURSOR;
10639c10924
< ' WHERE ROWID = :msgrowid ' ;
---
> ' WHERE ROWID = :1 ' ;
10642d10926
< DBMS_SQL.PARSE(UPDATE_CURSOR, UPDATE_TXT, DBMS_SQL.V7);
10648c10932
< ' WHERE ROWID = :msgrowid ' ;
---
> ' WHERE ROWID = :1 ' ;
10651d10934
< DBMS_SQL.PARSE(DELETE_CURSOR, DELETE_TXT, DBMS_SQL.V7);
10653d10935
< IGNORE := DBMS_SQL.EXECUTE(IOT_CURSOR);
10655,10671c10937,10940
< LOOP
< IF DBMS_SQL.FETCH_ROWS(IOT_CURSOR) > 0 THEN
< DBMS_SQL.COLUMN_VALUE(IOT_CURSOR, 1, MSGROWID);
< DBMS_SQL.COLUMN_VALUE(IOT_CURSOR, 2, MSGREFCNT);
< DBMS_SQL.COLUMN_VALUE(IOT_CURSOR, 3, MSGSTATE);
< DBMS_SQL.COLUMN_VALUE(IOT_CURSOR, 4, ENQUEUE_TIME);
< DBMS_SQL.COLUMN_VALUE(IOT_CURSOR, 5, DELAY);
< WRITE_TRACE('MESSAGE ROWID: ' || MSGROWID, TRACE_EV, TRACE_ONLINESUBOP);
< WRITE_TRACE('MESSAGE REFERENCE COUNT: ' || MSGREFCNT, TRACE_EV,
< TRACE_ONLINESUBOP);
< WRITE_TRACE('MESSAGE STATE: ' || MSGSTATE, TRACE_EV, TRACE_ONLINESUBOP);
< IF MSGREFCNT < 1 OR MSGSTATE > DBMS_AQ.READY THEN
< DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(-24020,
< 'Internal Inconsistency at ROWID: ' || ROWIDTOCHAR(MSGROWID));
< END IF;
<
< MSGREFCNT := MSGREFCNT - 1;
---
>
> IOT_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUBNAME));
> IOT_CURSOR := KWQAEXGCUR(JOIN_TXT, IOT_BNDS);
10673,10696c10942,10951
< IF (MSGREFCNT = 0) AND (RETENTION = FALSE) THEN
< DBMS_SQL.BIND_VARIABLE(DELETE_CURSOR, 'msgrowid', MSGROWID);
< IGNORE := DBMS_SQL.EXECUTE(DELETE_CURSOR);
< ELSE
< IF (MSGREFCNT = 0) THEN
< MSGSTATE := DBMS_AQ.PROCESSED;
< IF (RETENTIONTIME = -1) THEN
< MSGTIMEINFO := NULL;
< ELSE
< MSGTIMEINFO := CUR_QT_TIME + NUMTODSINTERVAL(RETENTIONTIME,
< 'SECOND');
< END IF;
< END IF;
< DBMS_SQL.BIND_VARIABLE(UPDATE_CURSOR, 'msgrefcnt', MSGREFCNT);
< DBMS_SQL.BIND_VARIABLE(UPDATE_CURSOR, 'msgstate', MSGSTATE);
< DBMS_SQL.BIND_VARIABLE(UPDATE_CURSOR, 'msgtimeinfo', MSGTIMEINFO);
< DBMS_SQL.BIND_VARIABLE(UPDATE_CURSOR, 'msgrowid', MSGROWID);
< IGNORE := DBMS_SQL.EXECUTE(UPDATE_CURSOR);
< WRITE_TRACE('Update IOT done ', TRACE_EV, TRACE_ONLINESUBOP) ;
< END IF;
<
< ELSE
< DBMS_SQL.CLOSE_CURSOR(UPDATE_CURSOR);
< EXIT;
---
> LOOP
> FETCH IOT_CURSOR INTO MSGROWID, MSGREFCNT, MSGSTATE, ENQUEUE_TIME, DELAY;
> EXIT WHEN IOT_CURSOR%NOTFOUND;
> WRITE_TRACE('MESSAGE ROWID: ' || MSGROWID, TRACE_EV, TRACE_ONLINESUBOP);
> WRITE_TRACE('MESSAGE REFERENCE COUNT: ' || MSGREFCNT, TRACE_EV,
> TRACE_ONLINESUBOP);
> WRITE_TRACE('MESSAGE STATE: ' || MSGSTATE, TRACE_EV, TRACE_ONLINESUBOP);
> IF MSGREFCNT < 1 OR MSGSTATE > DBMS_AQ.READY THEN
> DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(-24020,
> 'Internal Inconsistency at ROWID: ' || MSGROWID);
10697a10953,10977
>
> MSGREFCNT := MSGREFCNT - 1;
>
> IF (MSGREFCNT = 0) AND (RETENTION = FALSE) THEN
> DELETE_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => MSGROWID));
> DELETE_CURSOR := KWQAEXGCUR(DELETE_TXT, DELETE_BNDS);
> CLOSE DELETE_CURSOR;
> ELSE
> IF (MSGREFCNT = 0) THEN
> MSGSTATE := DBMS_AQ.PROCESSED;
> IF (RETENTIONTIME = -1) THEN
> MSGTIMEINFO := NULL;
> ELSE
> MSGTIMEINFO := CUR_QT_TIME + NUMTODSINTERVAL(RETENTIONTIME,
> 'SECOND');
> END IF;
> END IF;
> UPDATE_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => MSGREFCNT),
> AQ$_BND(NUM_VAL => MSGSTATE),
> AQ$_BND(TM_VAL => MSGTIMEINFO),
> AQ$_BND(UROWID_VAL => MSGROWID));
> UPDATE_CURSOR := KWQAEXGCUR(UPDATE_TXT, UPDATE_BNDS);
> WRITE_TRACE('Update IOT done ', TRACE_EV, TRACE_ONLINESUBOP);
> CLOSE UPDATE_CURSOR;
> END IF;
10704,10705c10984,10985
< ' WHERE msg_qname = :qname' || ' and ' ||
< ' appname = :subname';
---
> ' WHERE msg_qname = :1' || ' and ' ||
> ' appname = :2';
10707,10713c10987,10991
< DBMS_SQL.PARSE(DELETE_CURSOR, DELETE_TXT, DBMS_SQL.V7);
< DBMS_SQL.BIND_VARIABLE(DELETE_CURSOR, 'qname', Q_NAME);
< DBMS_SQL.BIND_VARIABLE(DELETE_CURSOR, 'subname', SUBNAME);
< IGNORE := DBMS_SQL.EXECUTE(DELETE_CURSOR);
< WRITE_TRACE('Delete IOT done', TRACE_EV, TRACE_ONLINESUBOP) ;
< DBMS_SQL.CLOSE_CURSOR(IOT_CURSOR);
< DBMS_SQL.CLOSE_CURSOR(DELETE_CURSOR);
---
> DELETE_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME), AQ$_BND(STR_VAL => SUBNAME));
> DELETE_CURSOR := KWQAEXGCUR(DELETE_TXT, DELETE_BNDS);
> CLOSE DELETE_CURSOR;
> WRITE_TRACE('Delete IOT done', TRACE_EV, TRACE_ONLINESUBOP);
> CLOSE IOT_CURSOR;
10781,10782c11059,11060
< IF DBMS_SQL.IS_OPEN(UPDATE_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(UPDATE_CURSOR);
---
> IF (UPDATE_CURSOR%ISOPEN) THEN
> CLOSE UPDATE_CURSOR;
10784,10788c11062,11063
< IF DBMS_SQL.IS_OPEN(DELETE_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(DELETE_CURSOR);
< END IF;
< IF DBMS_SQL.IS_OPEN(INSERT_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(INSERT_CURSOR);
---
> IF (DELETE_CURSOR%ISOPEN) THEN
> CLOSE DELETE_CURSOR;
11288c11563,11564
< END IF;
---
> END IF;
>
11503a11780,11781
> DEQ_DEL_BNDS AQ$_BND_ARRAY;
> DEQ_DEL_CUR SYS_REFCURSOR;
11508,11510c11786,11796
< FORALL CT IN 1..SUB_ID.COUNT
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID(CT), ENQUEUE_TIME(CT),
< STEP_NO(CT), CHAIN_NO(CT), LOCALORDER_NO(CT), MSGID(CT);
---
> FOR CT IN 1..SUB_ID.COUNT LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID(CT)),
> AQ$_BND(TM_VAL => ENQUEUE_TIME(CT)),
> AQ$_BND(NUM_VAL => STEP_NO(CT)),
> AQ$_BND(NUM_VAL => CHAIN_NO(CT)),
> AQ$_BND(NUM_VAL => LOCALORDER_NO(CT)),
> AQ$_BND(RAW_VAL => MSGID(CT)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
11514,11516c11800,11809
< FORALL CT IN 1..SUB_ID.COUNT
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID(CT), MSG_PRTY(CT),
< CHAIN_NO(CT), LOCALORDER_NO(CT), MSGID(CT) ;
---
> FOR CT IN 1..SUB_ID.COUNT LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID(CT)),
> AQ$_BND(NUM_VAL => MSG_PRTY(CT)),
> AQ$_BND(NUM_VAL => CHAIN_NO(CT)),
> AQ$_BND(NUM_VAL => LOCALORDER_NO(CT)),
> AQ$_BND(RAW_VAL => MSGID(CT)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
11520,11523c11813,11824
< FORALL CT IN 1..SUB_ID.COUNT
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID(CT), MSG_PRTY(CT),
< ENQUEUE_TIME(CT), STEP_NO(CT), CHAIN_NO(CT),
< LOCALORDER_NO(CT), MSGID(CT);
---
> FOR CT IN 1..SUB_ID.COUNT LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID(CT)),
> AQ$_BND(NUM_VAL => MSG_PRTY(CT)),
> AQ$_BND(TM_VAL => ENQUEUE_TIME(CT)),
> AQ$_BND(NUM_VAL => STEP_NO(CT)),
> AQ$_BND(NUM_VAL => CHAIN_NO(CT)),
> AQ$_BND(NUM_VAL => LOCALORDER_NO(CT)),
> AQ$_BND(RAW_VAL => MSGID(CT)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
11527,11530c11828,11839
< FORALL CT IN 1..SUB_ID.COUNT
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID(CT), ENQUEUE_TIME(CT),
< STEP_NO(CT), MSG_PRTY(CT), CHAIN_NO(CT), LOCALORDER_NO(CT),
< MSGID(CT) ;
---
> FOR CT IN 1..SUB_ID.COUNT LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID(CT)),
> AQ$_BND(TM_VAL => ENQUEUE_TIME(CT)),
> AQ$_BND(NUM_VAL => STEP_NO(CT)),
> AQ$_BND(NUM_VAL => MSG_PRTY(CT)),
> AQ$_BND(NUM_VAL => CHAIN_NO(CT)),
> AQ$_BND(NUM_VAL => LOCALORDER_NO(CT)),
> AQ$_BND(RAW_VAL => MSGID(CT)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
11534,11536c11843,11852
< FORALL CT IN 1..SUB_ID.COUNT
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID(CT), STEP_NO(CT),
< CHAIN_NO(CT), LOCALORDER_NO(CT), MSGID(CT);
---
> FOR CT IN 1..SUB_ID.COUNT LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID(CT)),
> AQ$_BND(NUM_VAL => STEP_NO(CT)),
> AQ$_BND(NUM_VAL => CHAIN_NO(CT)),
> AQ$_BND(NUM_VAL => LOCALORDER_NO(CT)),
> AQ$_BND(RAW_VAL => MSGID(CT)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
11572,11574d11887
< UPDATE_CURSOR INTEGER;
< DELETE_CURSOR INTEGER;
< INSERT_CURSOR INTEGER;
11579a11893,11894
> UPDATE_BNDS AQ$_BND_ARRAY;
> UPDATE_CUR SYS_REFCURSOR;
11581a11897,11898
> INSERT_BNDS AQ$_BND_ARRAY;
> INSERT_CUR SYS_REFCURSOR;
11582a11900,11901
> JOIN2_BNDS AQ$_BND_ARRAY;
> JOIN2_CUR SYS_REFCURSOR;
11612,11613c11931,11933
< TYPE RT IS REF CURSOR;
< QT_RC RT;
---
>
> QT_BNDS AQ$_BND_ARRAY;
> QT_CUR SYS_REFCURSOR;
11768c12088,12089
< OPEN QT_RC FOR JOIN_TXT USING PROXYID;
---
> QT_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => PROXYID));
> QT_CUR := KWQAEXGCUR(JOIN_TXT, QT_BNDS);
11770c12091,12092
< OPEN QT_RC FOR JOIN_TXT USING SUBID;
---
> QT_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUBID));
> QT_CUR := KWQAEXGCUR(JOIN_TXT, QT_BNDS);
11784c12106
< FETCH QT_RC BULK COLLECT INTO SUB_ID_ARR1, STEP_NO_ARR1, MSG_PRTY_ARR1,
---
> FETCH QT_CUR BULK COLLECT INTO SUB_ID_ARR1, STEP_NO_ARR1, MSG_PRTY_ARR1,
11786a12109
> CLOSE QT_CUR;
11798,11800c12121,12130
< FORALL CNT IN 1..COUNTER
< EXECUTE IMMEDIATE UPDATE_TXT
< USING CUR_QT_TIME, MSG_ID_ARR1(CNT), SUBID, '0', ADDRID;
---
> FOR CNT IN 1..COUNTER
> LOOP
> UPDATE_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(RAW_VAL => MSG_ID_ARR1(CNT)),
> AQ$_BND(NUM_VAL => SUBID), AQ$_BND(STR_VAL => '0'),
> AQ$_BND(NUM_VAL => ADDRID));
>
> UPDATE_CUR := KWQAEXGCUR(UPDATE_TXT, UPDATE_BNDS);
> CLOSE UPDATE_CUR;
> END LOOP;
11807,11809c12137,12146
< FORALL CNT IN 1..COUNTER
< EXECUTE IMMEDIATE UPDATE_TXT
< USING CUR_QT_TIME, MSG_ID_ARR1(CNT), SUBID, SUB.NAME, ADDRID;
---
> FOR CNT IN 1..COUNTER
> LOOP
> UPDATE_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(RAW_VAL => MSG_ID_ARR1(CNT)),
> AQ$_BND(NUM_VAL => SUBID), AQ$_BND(STR_VAL => SUB.NAME),
> AQ$_BND(NUM_VAL => ADDRID));
>
> UPDATE_CUR := KWQAEXGCUR(UPDATE_TXT, UPDATE_BNDS);
> CLOSE UPDATE_CUR;
> END LOOP;
11818,11819c12155,12160
< FORALL CNT IN 1..COUNTER
< EXECUTE IMMEDIATE INSERT_TXT USING CUR_QT_TIME, XID, MSG_ID_ARR1(CNT) ;
---
> FOR CNT IN 1..COUNTER LOOP
> INSERT_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(STR_VAL => XID), AQ$_BND(RAW_VAL => MSG_ID_ARR1(CNT)));
> INSERT_CUR := KWQAEXGCUR(INSERT_TXT, INSERT_BNDS);
> CLOSE INSERT_CUR;
> END LOOP;
11828c12169,12174
< EXECUTE IMMEDIATE JOIN_TXT2 INTO SUBCOUNT USING Q_NAME, MSG_ID_ARR1(CNT);
---
> JOIN2_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(RAW_VAL => MSG_ID_ARR1(CNT)));
> JOIN2_CUR := KWQAEXGCUR(JOIN_TXT2, JOIN2_BNDS);
> FETCH JOIN2_CUR INTO SUBCOUNT;
> CLOSE JOIN2_CUR;
>
11853,11854c12199,12204
< FORALL CNT IN 1..COUNTED
< EXECUTE IMMEDIATE INSERT_TXT USING CUR_QT_TIME, XID, MSG_ID_ARR2(CNT);
---
> FOR CNT IN 1..COUNTED LOOP
> INSERT_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(STR_VAL => XID), AQ$_BND(RAW_VAL => MSG_ID_ARR2(CNT)));
> INSERT_CUR := KWQAEXGCUR(INSERT_TXT, INSERT_BNDS);
> CLOSE INSERT_CUR;
> END LOOP;
11888,11892c12238,12239
< IF DBMS_SQL.IS_OPEN(UPDATE_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(UPDATE_CURSOR);
< END IF;
< IF DBMS_SQL.IS_OPEN(DELETE_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(DELETE_CURSOR);
---
> IF (UPDATE_CUR%ISOPEN) THEN
> CLOSE UPDATE_CUR;
11894,11895c12241,12242
< IF DBMS_SQL.IS_OPEN(INSERT_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(INSERT_CURSOR);
---
> IF (INSERT_CUR%ISOPEN) THEN
> CLOSE INSERT_CUR;
11997a12345,12346
> STMT_BNDS AQ$_BND_ARRAY;
> STMT_CUR SYS_REFCURSOR;
12035c12384
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
12044c12393,12394
< EXECUTE IMMEDIATE STMT_BUF;
---
> STMT_BNDS := AQ$_BND_ARRAY();
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12050c12400,12410
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> END IF;
>
> IF (STMT_CUR%ROWCOUNT = 0) THEN
> CLOSE STMT_CUR;
> EXIT;
> ELSE
> CLOSE STMT_CUR;
> COMMIT;
12052,12053d12411
< EXIT WHEN SQL%ROWCOUNT = 0;
< COMMIT;
12057c12415,12424
< EXECUTE IMMEDIATE STMT_BUF INTO MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY();
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> FETCH STMT_CUR INTO MSGIDS(I);
> IF (STMT_CUR%NOTFOUND) THEN
> CLOSE STMT_CUR;
> RAISE NO_DATA_FOUND;
> ELSE
> CLOSE STMT_CUR;
> END IF;
12062c12429,12431
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I);
---
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12067c12436,12440
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I-1), MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I-1)),
> AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12074c12447
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
12085c12458,12461
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12092c12468,12470
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12100c12478,12482
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I-1), MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I-1)),
> AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12107c12489,12492
< EXECUTE IMMEDIATE STMT_BUF USING MSGIDS(I-1), MSGIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGIDS(I-1)),
> AQ$_BND(RAW_VAL => MSGIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12110,12111c12495,12501
< EXIT WHEN SQL%ROWCOUNT = 0 OR I >= MSGIDS.COUNT;
< COMMIT;
---
> IF (STMT_CUR%ROWCOUNT = 0 OR I >= MSGIDS.COUNT) THEN
> CLOSE STMT_CUR;
> EXIT;
> ELSE
> CLOSE STMT_CUR;
> COMMIT;
> END IF;
12116c12506
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
12141c12531
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
12151c12541,12542
< EXECUTE IMMEDIATE STMT_BUF;
---
> STMT_BNDS := AQ$_BND_ARRAY();
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12158c12549,12558
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> END IF;
> IF (STMT_CUR%ROWCOUNT = 0) THEN
> CLOSE STMT_CUR;
> EXIT;
> ELSE
> CLOSE STMT_CUR;
> COMMIT;
12160,12161d12559
< EXIT WHEN SQL%ROWCOUNT = 0;
< COMMIT;
12165c12563,12567
< EXECUTE IMMEDIATE STMT_BUF INTO ROWIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY();
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> FETCH STMT_CUR INTO ROWIDS(I);
> CLOSE STMT_CUR;
12170c12572,12575
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12174c12579,12583
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS(I-1), ROWIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS(I-1)),
> AQ$_BND(UROWID_VAL => ROWIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12176c12585
< COMMIT;
---
> COMMIT;
12181c12590
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
12190c12599,12601
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12197c12608,12618
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS(I-1), ROWIDS(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS(I-1)),
> AQ$_BND(UROWID_VAL => ROWIDS(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> END IF;
> IF (STMT_CUR%ROWCOUNT = 0 OR I >= MSGIDS.COUNT) THEN
> CLOSE STMT_CUR;
> EXIT;
> ELSE
> CLOSE STMT_CUR;
> COMMIT;
12199,12200d12619
< EXIT WHEN SQL%ROWCOUNT = 0 OR I >= MSGIDS.COUNT;
< COMMIT;
12205c12624
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
12218c12637
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
12228c12647,12648
< EXECUTE IMMEDIATE STMT_BUF;
---
> STMT_BNDS := AQ$_BND_ARRAY();
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12235c12655,12664
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS2(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS2(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> END IF;
> IF (STMT_CUR%ROWCOUNT = 0) THEN
> CLOSE STMT_CUR;
> EXIT;
> ELSE
> CLOSE STMT_CUR;
> COMMIT;
12237,12238d12665
< EXIT WHEN SQL%ROWCOUNT = 0;
< COMMIT;
12242c12669,12673
< EXECUTE IMMEDIATE STMT_BUF INTO ROWIDS2(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY();
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> FETCH STMT_CUR INTO ROWIDS2(I);
> CLOSE STMT_CUR;
12247c12678,12681
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS2(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS2(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12251c12685,12689
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS2(I-1), ROWIDS2(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS2(I-1)),
> AQ$_BND(UROWID_VAL => ROWIDS2(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> CLOSE STMT_CUR;
12258c12696
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
12267c12705,12707
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS2(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS2(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
12274c12714,12724
< EXECUTE IMMEDIATE STMT_BUF USING ROWIDS2(I-1), ROWIDS2(I);
---
>
> STMT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROWIDS2(I-1)),
> AQ$_BND(UROWID_VAL => ROWIDS2(I)));
> STMT_CUR := KWQAEXGCUR(STMT_BUF, STMT_BNDS);
> END IF;
> IF (STMT_CUR%ROWCOUNT = 0 OR I >= MSGIDS.COUNT) THEN
> CLOSE STMT_CUR;
> EXIT;
> ELSE
> CLOSE STMT_CUR;
> COMMIT;
12276,12277d12725
< EXIT WHEN SQL%ROWCOUNT = 0 OR I >= MSGIDS.COUNT;
< COMMIT;
12282c12730
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
13630a14079,14080
> SEQ_BNDS AQ$_BND_ARRAY;
> SEQ_CUR SYS_REFCURSOR;
13638c14088,14091
< EXECUTE IMMEDIATE SEQQUERY INTO AGENTNO;
---
> SEQ_BNDS := AQ$_BND_ARRAY();
> SEQ_CUR := KWQAEXGCUR(SEQQUERY, SEQ_BNDS);
> FETCH SEQ_CUR INTO AGENTNO;
> CLOSE SEQ_CUR;
14921c15374
< DBMS_AQADM_INV.EXECUTE_STMT('ALTER TABLE ' ||
---
> EXECUTE_STMT3('ALTER TABLE ' ||
14927c15380
< DBMS_AQADM_INV.EXECUTE_STMT('ALTER TABLE ' ||
---
> EXECUTE_STMT3('ALTER TABLE ' ||
14933c15386
< DBMS_AQADM_INV.EXECUTE_STMT('ALTER TABLE ' ||
---
> EXECUTE_STMT3('ALTER TABLE ' ||
14939c15392
< DBMS_AQADM_INV.EXECUTE_STMT('ALTER TABLE ' ||
---
> EXECUTE_STMT3('ALTER TABLE ' ||
14945c15398
< DBMS_AQADM_INV.EXECUTE_STMT('ALTER TABLE ' ||
---
> EXECUTE_STMT3('ALTER TABLE ' ||
14951c15404
< DBMS_AQADM_INV.EXECUTE_STMT('ALTER TABLE ' ||
---
> EXECUTE_STMT3('ALTER TABLE ' ||
15007c15460
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15012c15465
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15015c15468
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15018c15471
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15021c15474
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15026c15479
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15060c15513
< DBMS_AQADM_INV.EXECUTE_STMT( SQL_STMT );
---
> EXECUTE_STMT3( SQL_STMT );
15126c15579
< DBMS_AQADM_INV.EXECUTE_STMT('delete from '||DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)||'.'||DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$_'||QT_NAME||'_L'||DQT)||' partition ('||DBMS_ASSERT.ENQUOTE_NAME(DQT||DQLOG_RC.PARTNAME||DQT)||') where seq_num >= (select q.memory_threshold from system.aq$_queues q, system.aq$_queue_tables t where q.table_objno = t.objno and q.table_objno = '|| TOBJNO ||' )');
---
> EXECUTE_STMT3('delete from '||DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)||'.'||DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$_'||QT_NAME||'_L'||DQT)||' partition ('||DBMS_ASSERT.ENQUOTE_NAME(DQT||DQLOG_RC.PARTNAME||DQT)||') where seq_num >= (select q.memory_threshold from system.aq$_queues q, system.aq$_queue_tables t where q.table_objno = t.objno and q.table_objno = '|| TOBJNO ||' )');
15134c15587
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15144c15597
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15219c15672
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15225c15678
< DBMS_AQADM_INV.EXECUTE_STMT('truncate table ' ||
---
> EXECUTE_STMT3('truncate table ' ||
15324c15777
< EXECUTE IMMEDIATE SQL_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SQL_STMT);
15657c16110
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15667c16120
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15679c16132
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15691c16144
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15704c16157
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15743c16196
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15767c16220
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15782c16235
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
15797c16250
< DBMS_AQADM_INV.EXECUTE_STMT(STMT_BUF);
---
> EXECUTE_STMT3(STMT_BUF);
16016c16469
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
16036c16489
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
16123c16576
< EXECUTE IMMEDIATE UPDATE_TEXT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPDATE_TEXT);
16152a16606,16607
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
16175c16630,16638
< EXECUTE IMMEDIATE SEL_STMT INTO MSG_CNT ;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
> FETCH SEL_CUR INTO MSG_CNT;
> IF (SEL_CUR%NOTFOUND) THEN
> CLOSE SEL_CUR;
> RAISE NO_DATA_FOUND;
> ELSE
> CLOSE SEL_CUR;
> END IF;
16193c16656,16657
< EXECUTE IMMEDIATE SEL_STMT;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
16207c16671
< EXECUTE IMMEDIATE COPY_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(COPY_STMT);
16213c16677
< EXECUTE IMMEDIATE UPDATE_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPDATE_STMT);
16217c16681
< EXECUTE IMMEDIATE DEL_STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DEL_STMT);
16898c17362
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
3c3 < TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512); --- > TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
7a8,20
>
>
>
>
>
> FUNCTION KWQAEXGCUR(STMT IN VARCHAR2,
> BND_ARRAY IN OUT AQ$_BND_ARRAY,
> USER IN VARCHAR2 DEFAULT NULL,
> FLAGS IN PLS_INTEGER DEFAULT NULL,
> OPCODE IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> PRAGMA INTERFACE(C, KWQAEXGCUR);
>
14,17c27,28
< IFJMS IN BOOLEAN DEFAULT FALSE) IS
< TYPE RT IS REF CURSOR;
< QT_RC1 RT;
< QT_RC2 RT;
---
> IFJMS IN BOOLEAN DEFAULT FALSE,
> INVOKER IN VARCHAR2 DEFAULT NULL) IS
18a30,31
> SEL1_BNDS AQ$_BND_ARRAY;
> SEL1_CUR SYS_REFCURSOR;
19a33,34
> SEL2_BNDS AQ$_BND_ARRAY;
> SEL2_CUR SYS_REFCURSOR;
99c114,115
< OPEN QT_RC1 FOR SEL_STMT1;
---
> SEL1_BNDS := AQ$_BND_ARRAY();
> SEL1_CUR := KWQAEXGCUR(SEL_STMT1, SEL1_BNDS, INVOKER);
103c119
< FETCH QT_RC1 BULK COLLECT INTO
---
> FETCH SEL1_CUR BULK COLLECT INTO
136,137c152,153
< CLOSE QT_RC1;
< OPEN QT_RC1 FOR SEL_STMT1;
---
> CLOSE SEL1_CUR;
> SEL1_CUR := KWQAEXGCUR(SEL_STMT1, SEL1_BNDS);
154c170
< CLOSE QT_RC1;
---
> CLOSE SEL1_CUR;
184c200,201
< OPEN QT_RC2 FOR SEL_STMT2;
---
> SEL2_BNDS := AQ$_BND_ARRAY();
> SEL2_CUR := KWQAEXGCUR(SEL_STMT2, SEL2_BNDS, INVOKER);
188c205
< FETCH QT_RC2 BULK COLLECT INTO
---
> FETCH SEL2_CUR BULK COLLECT INTO
229,230c246,247
< CLOSE QT_RC2;
< OPEN QT_RC2 FOR SEL_STMT2;
---
> CLOSE SEL2_CUR;
> SEL2_CUR := KWQAEXGCUR(SEL_STMT2, SEL2_BNDS);
247c264
< CLOSE QT_RC2;
---
> CLOSE SEL2_CUR;
253,254c270,275
< CLOSE QT_RC1;
< CLOSE QT_RC2;
---
> IF (SEL1_CUR%ISOPEN) THEN
> CLOSE SEL1_CUR;
> END IF;
> IF (SEL2_CUR%ISOPEN) THEN
> CLOSE SEL2_CUR;
> END IF;
267,268d287
< TYPE RT IS REF CURSOR;
< QT_RC RT;
269a289,290
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
342c363,364
< OPEN QT_RC FOR SEL_STMT;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS, INVOKER);
349c371
< FETCH QT_RC BULK COLLECT INTO
---
> FETCH SEL_CUR BULK COLLECT INTO
373a396
> CLOSE SEL_CUR;
389,390d411
< TYPE RT IS REF CURSOR;
< QT_RC RT;
391a413,414
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
447c470,471
< OPEN QT_RC FOR SEL_STMT;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS, INVOKER);
453c477
< FETCH QT_RC BULK COLLECT INTO
---
> FETCH SEL_CUR BULK COLLECT INTO
469a494
> CLOSE SEL_CUR;
642a668,669
> DEQ_DEL_BNDS AQ$_BND_ARRAY;
> DEQ_DEL_CUR SYS_REFCURSOR;
643a671,672
> DEQ_DEL_EXP_BNDS AQ$_BND_ARRAY;
> DEQ_DEL_EXP_CUR SYS_REFCURSOR;
644a674,675
> QT_DEL_BNDS AQ$_BND_ARRAY;
> QT_DEL_CUR SYS_REFCURSOR;
645a677,678
> HIS_DEL_BNDS AQ$_BND_ARRAY;
> HIS_DEL_CUR SYS_REFCURSOR;
648a682,683
> CT_DEL_BNDS AQ$_BND_ARRAY;
> CT_DEL_CUR SYS_REFCURSOR;
685,688c720,730
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID_ARR(I),
< ENQ_TIME_ARR(I), STEP_NO_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID_ARR(I)),
> AQ$_BND(TM_VAL => ENQ_TIME_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
703,706c745,754
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID_ARR(I),
< MSG_PRTY_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID_ARR(I)),
> AQ$_BND(NUM_VAL => MSG_PRTY_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
722,725c770,781
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID_ARR(I),
< MSG_PRTY_ARR(I), ENQ_TIME_ARR(I), STEP_NO_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID_ARR(I)),
> AQ$_BND(NUM_VAL => MSG_PRTY_ARR(I)),
> AQ$_BND(TM_VAL => ENQ_TIME_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
741,744c797,808
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID_ARR(I),
< ENQ_TIME_ARR(I), STEP_NO_ARR(I), MSG_PRTY_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID_ARR(I)),
> AQ$_BND(TM_VAL => ENQ_TIME_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => MSG_PRTY_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
759,762c823,832
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING SUB_ID_ARR(I),
< STEP_NO_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUB_ID_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
793,794c863,868
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE HIS_DEL_STMT USING MSG_ID_ARR(I), SUB_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> HIS_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSG_ID_ARR(I)),
> AQ$_BND(NUM_VAL => SUB_ID_ARR(I)));
> HIS_DEL_CUR := KWQAEXGCUR(HIS_DEL_STMT, HIS_DEL_BNDS);
> CLOSE HIS_DEL_CUR;
> END LOOP;
825c899,901
< EXECUTE IMMEDIATE DEQ_DEL_EXP ;
---
> DEQ_DEL_EXP_BNDS := AQ$_BND_ARRAY();
> DEQ_DEL_EXP_CUR := KWQAEXGCUR(DEQ_DEL_EXP, DEQ_DEL_EXP_BNDS);
> CLOSE DEQ_DEL_EXP_CUR;
827,828c903,908
< FORALL I IN EXP_ARR.FIRST .. EXP_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_EXP USING EXP_ARR(I), EXP_ARR(I) ;
---
> FOR I IN EXP_ARR.FIRST .. EXP_ARR.LAST LOOP
> DEQ_DEL_EXP_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => EXP_ARR(I)),
> AQ$_BND(RAW_VAL => EXP_ARR(I)));
> DEQ_DEL_EXP_CUR := KWQAEXGCUR(DEQ_DEL_EXP, DEQ_DEL_EXP_BNDS);
> CLOSE DEQ_DEL_EXP_CUR;
> END LOOP;
902c982,985
< EXECUTE IMMEDIATE CT_DEL_STMT USING IN CT_UPD_ROW_IDS(I);
---
> CT_DEL_BNDS :=
> AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => CT_UPD_ROW_IDS(I)));
> CT_DEL_CUR := KWQAEXGCUR(CT_DEL_STMT, CT_DEL_BNDS);
> CLOSE CT_DEL_CUR;
924,926c1007,1011
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE QT_DEL_STMT USING
< MSG_ID_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> QT_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSG_ID_ARR(I)), AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
> QT_DEL_CUR := KWQAEXGCUR(QT_DEL_STMT, QT_DEL_BNDS);
> CLOSE QT_DEL_CUR;
> END LOOP;
949a1035,1036
> DEQ_DEL_BNDS AQ$_BND_ARRAY;
> DEQ_DEL_CUR SYS_REFCURSOR;
951a1039,1040
> DEQ_DEL_EXP_BNDS AQ$_BND_ARRAY;
> DEQ_DEL_EXP_CUR SYS_REFCURSOR;
952a1042,1043
> QT_DEL_BNDS AQ$_BND_ARRAY;
> QT_DEL_CUR SYS_REFCURSOR;
953a1045,1046
> HIS_DEL_BNDS AQ$_BND_ARRAY;
> HIS_DEL_CUR SYS_REFCURSOR;
956a1050,1051
> CT_DEL_BNDS AQ$_BND_ARRAY;
> CT_DEL_CUR SYS_REFCURSOR;
993,996c1088,1099
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING NAME_ARR(I), QUE_NUM_ARR(I),
< ENQ_TIME_ARR(I), STEP_NO_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => NAME_ARR(I)),
> AQ$_BND(NUM_VAL => QUE_NUM_ARR(I)),
> AQ$_BND(TM_VAL => ENQ_TIME_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
1011,1014c1114,1124
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING NAME_ARR(I), QUE_NUM_ARR(I),
< MSG_PRTY_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => NAME_ARR(I)),
> AQ$_BND(NUM_VAL => QUE_NUM_ARR(I)),
> AQ$_BND(NUM_VAL => MSG_PRTY_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
1030,1034c1140,1152
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING NAME_ARR(I), QUE_NUM_ARR(I),
< MSG_PRTY_ARR(I), ENQ_TIME_ARR(I), STEP_NO_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
<
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => NAME_ARR(I)),
> AQ$_BND(NUM_VAL => QUE_NUM_ARR(I)),
> AQ$_BND(NUM_VAL => MSG_PRTY_ARR(I)),
> AQ$_BND(TM_VAL => ENQ_TIME_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
1049,1052c1167,1179
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING NAME_ARR(I), QUE_NUM_ARR(I),
< ENQ_TIME_ARR(I), STEP_NO_ARR(I), MSG_PRTY_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => NAME_ARR(I)),
> AQ$_BND(NUM_VAL => QUE_NUM_ARR(I)),
> AQ$_BND(TM_VAL => ENQ_TIME_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => MSG_PRTY_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
1067,1070c1194,1204
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_STMT USING NAME_ARR(I), QUE_NUM_ARR(I),
< STEP_NO_ARR(I), CHAIN_NO_ARR(I),
< LOCAL_ORDER_NO_ARR(I), MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> DEQ_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => NAME_ARR(I)),
> AQ$_BND(NUM_VAL => QUE_NUM_ARR(I)),
> AQ$_BND(NUM_VAL => STEP_NO_ARR(I)),
> AQ$_BND(NUM_VAL => CHAIN_NO_ARR(I)),
> AQ$_BND(NUM_VAL => LOCAL_ORDER_NO_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
>
> DEQ_DEL_CUR := KWQAEXGCUR(DEQ_DEL_STMT, DEQ_DEL_BNDS);
> CLOSE DEQ_DEL_CUR;
> END LOOP;
1101,1102c1235,1240
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE HIS_DEL_STMT USING MSG_ID_ARR(I), NAME_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> HIS_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSG_ID_ARR(I)),
> AQ$_BND(STR_VAL => NAME_ARR(I)));
> HIS_DEL_CUR := KWQAEXGCUR(HIS_DEL_STMT, HIS_DEL_BNDS);
> CLOSE HIS_DEL_CUR;
> END LOOP;
1133c1271,1273
< EXECUTE IMMEDIATE DEQ_DEL_EXP ;
---
> DEQ_DEL_EXP_BNDS := AQ$_BND_ARRAY();
> DEQ_DEL_EXP_CUR := KWQAEXGCUR(DEQ_DEL_EXP, DEQ_DEL_EXP_BNDS);
> CLOSE DEQ_DEL_EXP_CUR;
1135,1136c1275,1280
< FORALL I IN EXP_ARR.FIRST .. EXP_ARR.LAST
< EXECUTE IMMEDIATE DEQ_DEL_EXP USING EXP_ARR(I), EXP_ARR(I);
---
> FOR I IN EXP_ARR.FIRST .. EXP_ARR.LAST LOOP
> DEQ_DEL_EXP_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => EXP_ARR(I)),
> AQ$_BND(RAW_VAL => EXP_ARR(I)));
> DEQ_DEL_EXP_CUR := KWQAEXGCUR(DEQ_DEL_EXP, DEQ_DEL_EXP_BNDS);
> CLOSE DEQ_DEL_EXP_CUR;
> END LOOP;
1210c1354,1357
< EXECUTE IMMEDIATE CT_DEL_STMT USING IN CT_UPD_ROW_IDS(I);
---
> CT_DEL_BNDS :=
> AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => CT_UPD_ROW_IDS(I)));
> CT_DEL_CUR := KWQAEXGCUR(CT_DEL_STMT, CT_DEL_BNDS);
> CLOSE CT_DEL_CUR;
1232,1235c1379,1384
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE QT_DEL_STMT USING
< MSG_ID_ARR(I), MSG_ID_ARR(I);
<
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> QT_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSG_ID_ARR(I)),
> AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
> QT_DEL_CUR := KWQAEXGCUR(QT_DEL_STMT, QT_DEL_BNDS);
> CLOSE QT_DEL_CUR;
> END LOOP;
1244c1393,1394
< PURGE_CONDITION IN VARCHAR2) IS
---
> PURGE_CONDITION IN VARCHAR2,
> INVOKER IN VARCHAR2 DEFAULT NULL) IS
1246,1247d1395
< TYPE RT IS REF CURSOR;
< QT_RC RT;
1248a1397,1398
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
1249a1400,1404
> QT_DEL_BNDS AQ$_BND_ARRAY;
> QT_DEL_CUR SYS_REFCURSOR;
> HIST_DEL_STMT VARCHAR2(512);
> HIST_DEL_BNDS AQ$_BND_ARRAY;
> HIST_DEL_CUR SYS_REFCURSOR;
1263c1418,1419
< OPEN QT_RC FOR SEL_STMT;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS, INVOKER);
1268c1424
< FETCH QT_RC BULK COLLECT INTO
---
> FETCH SEL_CUR BULK COLLECT INTO
1280,1281c1436,1442
< FORALL I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST
< EXECUTE IMMEDIATE QT_DEL_STMT USING MSG_ID_ARR(I);
---
> FOR I IN MSG_ID_ARR.FIRST .. MSG_ID_ARR.LAST LOOP
> QT_DEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSG_ID_ARR(I)));
> QT_DEL_CUR := KWQAEXGCUR(QT_DEL_STMT, QT_DEL_BNDS, INVOKER);
> CLOSE QT_DEL_CUR;
> END LOOP;
>
> DBMS_AQADM_SYS.WRITE_TRACE('Deleted Rows from QT: ' || SQL%ROWCOUNT);
1283d1443
< DBMS_AQADM_SYS.WRITE_TRACE('Deleted Rows: ' || SQL%ROWCOUNT);
1305a1466,1467
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
1307a1470,1471
> TMP_BNDS AQ$_BND_ARRAY;
> TMP_CUR SYS_REFCURSOR;
1309a1474,1476
>
> TMP_BNDS := AQ$_BND_ARRAY();
>
1328c1495,1496
< EXECUTE IMMEDIATE TMP_STMT;
---
> TMP_CUR := KWQAEXGCUR(TMP_STMT, TMP_BNDS, INVOKER);
> CLOSE TMP_CUR;
1335c1503,1504
< EXECUTE IMMEDIATE TMP_STMT;
---
> TMP_CUR := KWQAEXGCUR(TMP_STMT, TMP_BNDS, INVOKER);
> CLOSE TMP_CUR;
1342c1511,1512
< EXECUTE IMMEDIATE TMP_STMT;
---
> TMP_CUR := KWQAEXGCUR(TMP_STMT, TMP_BNDS, INVOKER);
> CLOSE TMP_CUR;
1349c1519,1520
< EXECUTE IMMEDIATE TMP_STMT;
---
> TMP_CUR := KWQAEXGCUR(TMP_STMT, TMP_BNDS, INVOKER);
> CLOSE TMP_CUR;
1353c1524,1527
< END IF;
---
> END IF;
>
> SEL_BNDS := AQ$_BND_ARRAY();
>
1361c1535,1537
< EXECUTE IMMEDIATE SEL_STMT INTO TMP_NUM;
---
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS, INVOKER);
> FETCH SEL_CUR INTO TMP_NUM;
> CLOSE SEL_CUR;
1375c1551,1552
< PURGE_PERSISTENT_SCQ_TABLE(QT_SCHEMA, QT_NAME, PURGE_CONDITION);
---
> PURGE_PERSISTENT_SCQ_TABLE(QT_SCHEMA, QT_NAME,
> PURGE_CONDITION, INVOKER);
1389c1566
< QT_FLAGS, QT_SORT_COLS, IFJMS);
---
> QT_FLAGS, QT_SORT_COLS, IFJMS, INVOKER);
1440a1618,1619
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
1472c1651,1653
< EXECUTE IMMEDIATE SEL_STMT;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
> CLOSE SEL_CUR;
1483c1664,1665
<
---
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
1514c1696,1698
< EXECUTE IMMEDIATE SEL_STMT;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
> CLOSE SEL_CUR;
0a1,57
> PACKAGE BODY dbms_aq_sub AS
>
> /*
> * ICD to execute any aritrary SQL statement inside kernel by bypassing
> * database vault/audit check. It returns cursor to the executed sql
> * statement. (Refer to prvtaqds.sql for parameter description)
> */
> FUNCTION kwqaexgcur(stmt IN VARCHAR2,
> bnd_array IN OUT AQ$_BND_ARRAY,
> user IN VARCHAR2 DEFAULT NULL,
> flags IN PLS_INTEGER DEFAULT NULL,
> opcode IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> pragma interface(C, kwqaexgcur);
>
> FUNCTION get_sub_cursor(schema IN VARCHAR2,
> dquser IN VARCHAR2,
> qtname IN VARCHAR2,
> qname IN VARCHAR2,
> qtflags IN BINARY_INTEGER)
> RETURN SYS_REFCURSOR IS
> sel_txt VARCHAR2(1000);
> cur SYS_REFCURSOR;
> bnd_arr aq$_bnd_array;
> BEGIN
> IF bitand(qtflags, 8) = 0 and bitand(qtflags, 67108864) = 0 THEN
> RETURN NULL;
> ELSIF bitand(qtflags, 4096) = 4096 and dquser IS NOT NULL THEN
>
> sel_txt := 'select qs.name, qs.address, qs.protocol, qs.trans_name, '
> || ' qs.subscriber_type, qs.rule_name from '
> || 'dba_aq_agent_privs dp, '
> || dbms_assert.enquote_name('"'|| schema ||'"') || '.'
> || dbms_assert.enquote_name('"AQ$_' || qtname || '_S"')
> || ' qs where dp.db_username = :1 and '
> || 'dp.agent_name = qs.name and bitand(qs.subscriber_type, 1)=1'
> || ' and qs.queue_name = :2';
> bnd_arr := aq$_bnd_array(aq$_bnd(str_val => dquser), aq$_bnd(str_val => qname));
> cur := kwqaexgcur(sel_txt, bnd_arr);
> RETURN cur;
> ELSIF bitand(qtflags, 67108864) = 67108864 THEN
> RETURN NULL;
> ELSE
> -- 8.1 style normal queue, return all subscribers
> sel_txt := 'select name, address, protocol, trans_name, ' ||
> 'subscriber_type, rule_name from ' ||
> dbms_assert.enquote_name('"'|| schema ||'"') || '.' ||
> dbms_assert.enquote_name('"AQ$_' || qtname || '_S"') ||
> ' where ' ||
> 'bitand(subscriber_type, 1)=1 and queue_name = :1';
> bnd_arr := aq$_bnd_array(aq$_bnd(str_val => qname));
> cur := kwqaexgcur(sel_txt, bnd_arr);
> RETURN cur;
> END IF;
> END;
> END;
>
15c15 < TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512); --- > TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767); 28a29,30 > TABLE_DOES_NOT_EXIST EXCEPTION; > PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942); 43a46,57 > > > > > FUNCTION KWQAEXGCUR(STMT IN VARCHAR2, > BND_ARRAY IN OUT AQ$_BND_ARRAY, > USER IN VARCHAR2 DEFAULT NULL, > FLAGS IN PLS_INTEGER DEFAULT NULL, > OPCODE IN PLS_INTEGER DEFAULT NULL) > RETURN SYS_REFCURSOR; > PRAGMA INTERFACE(C, KWQAEXGCUR); > 46a61,124 > > > PROCEDURE AQ_INTERNAL_EXESTMT( > SQL_STMT IN VARCHAR2, > OPCODE IN NUMBER DEFAULT NULL, > BYPASS_DV IN BOOLEAN DEFAULT TRUE, > BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE, > IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL, > IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE, > OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE, > OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_RAW_PARAM1 IN RAW DEFAULT NULL, > IN_RAW_PARAM2 IN RAW DEFAULT NULL, > IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL, > IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL, > IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL, > IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL, > IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, > IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, > OUT_RAW_PARAM1 OUT RAW, > OUT_RAW_PARAM2 OUT RAW, > OUT_BINT_PARAM1 OUT BINARY_INTEGER, > OUT_BINT_PARAM2 OUT BINARY_INTEGER, > OUT_INT_PARAM1 OUT PLS_INTEGER, > OUT_INT_PARAM2 OUT PLS_INTEGER, > OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE, > OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE) > IS EXTERNAL > NAME "aq_internal_exeStmt" > WITH CONTEXT > PARAMETERS(CONTEXT, > SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2, > OPCODE OCINUMBER, OPCODE INDICATOR SB2, > BYPASS_DV SB4, BYPASS_DV INDICATOR SB2, > BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2, > IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2, > IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2, > IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2, > IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2, > OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2, > OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2, > OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2, > OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2, > IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2, > IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2, > IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2, > IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2, > IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2, > IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2, > IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2, > IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2, > OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2, > OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2, > OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2, > OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2, > OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2, > OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2, > OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2, > OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2) > LIBRARY DBMS_AQINT_LIB; 47a126,189 > > > > PROCEDURE EXECUTE_STMT_IN_KERNEL_CURSOR( > SQL_STMT IN VARCHAR2, > IGNORE_DDL IN BOOLEAN DEFAULT TRUE, > OPCODE IN NUMBER DEFAULT NULL, > BYPASS_DV IN BOOLEAN DEFAULT TRUE, > BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE, > IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL, > IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, > IN_RAW_PARAM1 IN RAW DEFAULT NULL, > IN_RAW_PARAM2 IN RAW DEFAULT NULL, > IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, > IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL) IS > > OUT_STR_ARR STR_ARRAY_TYPE; > OUT_NUM_ARR NUM_ARRAY_TYPE; > OUT_RAW_PRM1 RAW(32737); > OUT_RAW_PRM2 RAW(32737); > OUT_BINT_PRM1 BINARY_INTEGER; > OUT_BINT_PRM2 BINARY_INTEGER; > OUT_INT_PRM1 PLS_INTEGER; > OUT_INT_PRM2 PLS_INTEGER; > OUT_TIME_PRM1 TIMESTAMP WITH TIME ZONE; > OUT_TIME_PRM2 TIMESTAMP WITH TIME ZONE; > BEGIN > AQ_INTERNAL_EXESTMT( > SQL_STMT => SQL_STMT, > OPCODE => OPCODE, > BYPASS_DV => BYPASS_DV, > BYPASS_AUDIT => BYPASS_AUDIT, > IN_STR_ARRAY => IN_STR_ARRAY, > IN_STRPOS_ARRAY=> IN_STRPOS_ARRAY, > IN_NUM_ARRAY => IN_NUM_ARRAY, > IN_NUMPOS_ARRAY=> IN_NUMPOS_ARRAY, > IN_RAW_PARAM1 => IN_RAW_PARAM1, > IN_RAW_PARAM2 => IN_RAW_PARAM2, > IN_TIME_PARAM1 => IN_TIME_PARAM1, > IN_TIME_PARAM2 => IN_TIME_PARAM2, > OUT_STR_ARRAY => OUT_STR_ARR, > OUT_STRPOS_ARRAY=> NULL, > OUT_NUM_ARRAY => OUT_NUM_ARR, > OUT_NUMPOS_ARRAY=> NULL, > IN_BINT_PARAM1 => NULL, > IN_BINT_PARAM2 => NULL, > IN_INT_PARAM1 => NULL, > IN_INT_PARAM2 => NULL, > OUT_RAW_PARAM1 => OUT_RAW_PRM1, > OUT_RAW_PARAM2 => OUT_RAW_PRM2, > OUT_BINT_PARAM1=> OUT_BINT_PRM1, > OUT_BINT_PARAM2=> OUT_BINT_PRM2, > OUT_INT_PARAM1 => OUT_INT_PRM1, > OUT_INT_PARAM2 => OUT_INT_PRM2, > OUT_TIME_PARAM1=> OUT_TIME_PRM1, > OUT_TIME_PARAM2=> OUT_TIME_PRM1); > EXCEPTION > WHEN TABLE_DOES_NOT_EXIST THEN > IF (IGNORE_DDL = FALSE) THEN > RAISE; > END IF; > END; 304a447,448 > SEQC_BNDS AQ$_BND_ARRAY; > SEQC_CUR SYS_REFCURSOR; 331c475,478 < EXECUTE IMMEDIATE SEQCSTMT INTO SEQCURVAL; --- > SEQC_BNDS := AQ$_BND_ARRAY(); > SEQC_CUR := KWQAEXGCUR(SEQCSTMT, SEQC_BNDS); > FETCH SEQC_CUR INTO SEQCURVAL; > CLOSE SEQC_CUR; 345c492,495 < EXECUTE IMMEDIATE SEQCSTMT INTO SEQCURVAL; --- > SEQC_BNDS := AQ$_BND_ARRAY(); > SEQC_CUR := KWQAEXGCUR(SEQCSTMT, SEQC_BNDS); > FETCH SEQC_CUR INTO SEQCURVAL; > CLOSE SEQC_CUR; 355c505,508 < EXECUTE IMMEDIATE SEQCSTMT INTO SEQCURVAL; --- > SEQC_BNDS := AQ$_BND_ARRAY(); > SEQC_CUR := KWQAEXGCUR(SEQCSTMT, SEQC_BNDS); > FETCH SEQC_CUR INTO SEQCURVAL; > CLOSE SEQC_CUR; 365c518,521 < EXECUTE IMMEDIATE SEQCSTMT INTO SEQCURVAL; --- > SEQC_BNDS := AQ$_BND_ARRAY(); > SEQC_CUR := KWQAEXGCUR(SEQCSTMT, SEQC_BNDS); > FETCH SEQC_CUR INTO SEQCURVAL; > CLOSE SEQC_CUR; 383,445d538 < < PROCEDURE AQ_INTERNAL_EXESTMT( < SQL_STMT IN VARCHAR2, < OPCODE IN NUMBER DEFAULT NULL, < BYPASS_DV IN BOOLEAN DEFAULT TRUE, < BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE, < IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL, < IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE, < OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE, < OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL, < IN_RAW_PARAM1 IN RAW DEFAULT NULL, < IN_RAW_PARAM2 IN RAW DEFAULT NULL, < IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL, < IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL, < IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL, < IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL, < IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, < IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, < OUT_RAW_PARAM1 OUT RAW, < OUT_RAW_PARAM2 OUT RAW, < OUT_BINT_PARAM1 OUT BINARY_INTEGER, < OUT_BINT_PARAM2 OUT BINARY_INTEGER, < OUT_INT_PARAM1 OUT PLS_INTEGER, < OUT_INT_PARAM2 OUT PLS_INTEGER, < OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE, < OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE) < IS EXTERNAL < NAME "aq_internal_exeStmt" < WITH CONTEXT < PARAMETERS(CONTEXT, < SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2, < OPCODE OCINUMBER, OPCODE INDICATOR SB2, < BYPASS_DV SB4, BYPASS_DV INDICATOR SB2, < BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2, < IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2, < IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2, < IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2, < IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2, < OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2, < OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2, < OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2, < OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2, < IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2, < IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2, < IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2, < IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2, < IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2, < IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2, < IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2, < IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2, < OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2, < OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2, < OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2, < OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2, < OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2, < OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2, < OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2, < OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2) < LIBRARY DBMS_AQINT_LIB;
42c42 < TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512); --- > TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
3c3
< TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512);
---
> TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
5a6,34
>
>
> UNIQUENESS_CONSTRAINT_VIOLATED EXCEPTION;
> PRAGMA EXCEPTION_INIT(UNIQUENESS_CONSTRAINT_VIOLATED, -1);
>
> TABLE_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942);
>
> INDEX_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(INDEX_DOES_NOT_EXIST, -1418);
>
> NAME_IN_USE EXCEPTION;
> PRAGMA EXCEPTION_INIT(NAME_IN_USE, -955);
>
> COLUMN_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(COLUMN_EXISTS, -1430);
>
> PRIMARY_KEY_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(PRIMARY_KEY_EXISTS, -2260);
>
> COMPILE_ERROR EXCEPTION;
> PRAGMA EXCEPTION_INIT(COMPILE_ERROR, -24344);
>
> SEQUENCE_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(SEQUENCE_DOES_NOT_EXIST, -2289);
>
> OBJECT_ALREADY_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(OBJECT_ALREADY_EXISTS, -955);
>
8a38,183
>
>
>
>
>
> FUNCTION KWQAEXGCUR(STMT IN VARCHAR2,
> BND_ARRAY IN OUT AQ$_BND_ARRAY,
> USER IN VARCHAR2 DEFAULT NULL,
> FLAGS IN PLS_INTEGER DEFAULT NULL,
> OPCODE IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> PRAGMA INTERFACE(C, KWQAEXGCUR);
>
>
>
>
>
>
>
> PROCEDURE AQ_INTERNAL_EXESTMT(
> SQL_STMT IN VARCHAR2,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
> OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
> OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
> IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
> IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
> IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> OUT_RAW_PARAM1 OUT RAW,
> OUT_RAW_PARAM2 OUT RAW,
> OUT_BINT_PARAM1 OUT BINARY_INTEGER,
> OUT_BINT_PARAM2 OUT BINARY_INTEGER,
> OUT_INT_PARAM1 OUT PLS_INTEGER,
> OUT_INT_PARAM2 OUT PLS_INTEGER,
> OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
> OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
> IS EXTERNAL
> NAME "aq_internal_exeStmt"
> WITH CONTEXT
> PARAMETERS(CONTEXT,
> SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
> OPCODE OCINUMBER, OPCODE INDICATOR SB2,
> BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
> BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
> IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
> IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
> IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
> IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
> OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
> OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
> OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
> OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
> IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
> IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
> IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
> IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
> IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
> IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
> IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
> IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
> OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
> OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
> OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
> OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
> OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
> OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
> OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
> OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
> LIBRARY DBMS_AQINT_LIB;
>
>
>
>
> PROCEDURE EXECUTE_STMT_IN_KERNEL_CURSOR(
> SQL_STMT IN VARCHAR2,
> IGNORE_DDL IN BOOLEAN DEFAULT TRUE,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL) IS
>
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW_PRM1 RAW(32737);
> OUT_RAW_PRM2 RAW(32737);
> OUT_BINT_PRM1 BINARY_INTEGER;
> OUT_BINT_PRM2 BINARY_INTEGER;
> OUT_INT_PRM1 PLS_INTEGER;
> OUT_INT_PRM2 PLS_INTEGER;
> OUT_TIME_PRM1 TIMESTAMP WITH TIME ZONE;
> OUT_TIME_PRM2 TIMESTAMP WITH TIME ZONE;
> BEGIN
> AQ_INTERNAL_EXESTMT(
> SQL_STMT => SQL_STMT,
> OPCODE => OPCODE,
> BYPASS_DV => BYPASS_DV,
> BYPASS_AUDIT => BYPASS_AUDIT,
> IN_STR_ARRAY => IN_STR_ARRAY,
> IN_STRPOS_ARRAY=> IN_STRPOS_ARRAY,
> IN_NUM_ARRAY => IN_NUM_ARRAY,
> IN_NUMPOS_ARRAY=> IN_NUMPOS_ARRAY,
> IN_RAW_PARAM1 => IN_RAW_PARAM1,
> IN_RAW_PARAM2 => IN_RAW_PARAM2,
> IN_TIME_PARAM1 => IN_TIME_PARAM1,
> IN_TIME_PARAM2 => IN_TIME_PARAM2,
> OUT_STR_ARRAY => OUT_STR_ARR,
> OUT_STRPOS_ARRAY=> NULL,
> OUT_NUM_ARRAY => OUT_NUM_ARR,
> OUT_NUMPOS_ARRAY=> NULL,
> IN_BINT_PARAM1 => NULL,
> IN_BINT_PARAM2 => NULL,
> IN_INT_PARAM1 => NULL,
> IN_INT_PARAM2 => NULL,
> OUT_RAW_PARAM1 => OUT_RAW_PRM1,
> OUT_RAW_PARAM2 => OUT_RAW_PRM2,
> OUT_BINT_PARAM1=> OUT_BINT_PRM1,
> OUT_BINT_PARAM2=> OUT_BINT_PRM2,
> OUT_INT_PARAM1 => OUT_INT_PRM1,
> OUT_INT_PARAM2 => OUT_INT_PRM2,
> OUT_TIME_PARAM1=> OUT_TIME_PRM1,
> OUT_TIME_PARAM2=> OUT_TIME_PRM1);
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (IGNORE_DDL = FALSE) THEN
> RAISE;
> END IF;
> END;
9a185,190
>
>
>
>
>
>
10a192,194
> PROCEDURE EXECUTE_STMT3(STMT IN VARCHAR2,
> IGNORE_DDL_ERROR IN BOOLEAN DEFAULT FALSE,
> IGNORE_COMPERR IN BOOLEAN DEFAULT FALSE) IS
11a196
> STREAMS_CAPTURE_OFF BOOLEAN;
12a198,270
> BEGIN
> DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmt3: '|| STMT);
> STREAMS_CAPTURE_OFF := DBMS_AQADM_SYSCALLS.KWQA_3GL_ISSTREAMSCAPTUREOFF;
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(TRUE);
> END IF;
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN INDEX_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN NAME_IN_USE THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN INVALID_COLUMN THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN COLUMN_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN PRIMARY_KEY_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN COMPILE_ERROR THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_COMPERR THEN
> RAISE;
> END IF;
> WHEN SEQUENCE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN OTHERS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> RAISE;
> END;
117c375
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
143c401
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
284,285c542,543
< EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || DBMS_ASSERT.ENQUOTE_NAME(SCHEMA, FALSE)
< || '.' || DBMS_ASSERT.ENQUOTE_NAME(TABNAME,FALSE);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR('TRUNCATE TABLE ' || DBMS_ASSERT.ENQUOTE_NAME(SCHEMA, FALSE)
> || '.' || DBMS_ASSERT.ENQUOTE_NAME(TABNAME,FALSE));
365c623
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
383c641
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
423c681
< EXECUTE IMMEDIATE ALTER_SEQ_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(ALTER_SEQ_SQL);
442c700
< EXECUTE IMMEDIATE ALTER_SEQ_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(ALTER_SEQ_SQL);
448c706
< EXECUTE IMMEDIATE ALTER_SEQ_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(ALTER_SEQ_SQL);
596c854
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
603c861
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
607c865
< DBMS_AQADM_INV.EXECUTE_STMT2(
---
> EXECUTE_STMT3(
1164,1165d1421
< TYPE DQLSCURTYP IS REF CURSOR;
< DQLS_CV DQLSCURTYP;
1171a1428,1429
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
1186c1444,1449
< EXECUTE IMMEDIATE UPD_STMT USING B_QUEUE, QSSCHEMA,QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPD_STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QSSCHEMA, QNAME),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(B_QUEUE),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1));
>
1194d1456
< OPEN DQLS_CV FOR SEL_STMT USING QSSCHEMA, QNAME;
1195a1458,1460
> SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QSSCHEMA),
> AQ$_BND(STR_VAL => QNAME));
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
1197,1198c1462,1463
< FETCH DQLS_CV INTO QOBJID,SHARD,EXQNAME;
< EXIT WHEN DQLS_CV%NOTFOUND;
---
> FETCH SEL_CUR INTO QOBJID,SHARD,EXQNAME;
> EXIT WHEN SEL_CUR%NOTFOUND;
1215c1480,1481
< EXECUTE IMMEDIATE DEL_STMT USING EXQNAME,QSSCHEMA,QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DEL_STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(EXQNAME, QSSCHEMA, QNAME));
1219,1221c1485,1490
<
< CLOSE DQLS_CV;
< OPEN DQLS_CV FOR SEL_STMT USING QSSCHEMA, QNAME;
---
> CLOSE SEL_CUR;
>
> SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QSSCHEMA),
> AQ$_BND(STR_VAL => QNAME));
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
>
1223,1224c1492,1493
< FETCH DQLS_CV INTO QOBJID,SHARD,EXQNAME;
< EXIT WHEN DQLS_CV%NOTFOUND;
---
> FETCH SEL_CUR INTO QOBJID,SHARD,EXQNAME;
> EXIT WHEN SEL_CUR%NOTFOUND;
1238c1507,1512
< EXECUTE IMMEDIATE UPD_STMT USING NEWEXQID,B_QUEUE,QSSCHEMA,EXQNAME,QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPD_STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QSSCHEMA, EXQNAME, QNAME),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(3, 4, 5),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(NEWEXQID, B_QUEUE),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 2));
>
1242,1243c1516,1518
< || ' where queue= :2';
< EXECUTE IMMEDIATE UPD_STMT USING NEWEXQID,QOBJID;
---
> || ' where queue= :2';
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPD_STMT,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(NEWEXQID, QOBJID));
1247c1522
< CLOSE DQLS_CV;
---
> CLOSE SEL_CUR;
1262a1538,1539
> RC_BNDS AQ$_BND_ARRAY;
> RC_CUR SYS_REFCURSOR;
1302c1579
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1354c1631
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1387c1664
< DBMS_AQADM_INV.EXECUTE_STMT(ALT_Q_TAB_STMT);
---
> EXECUTE_STMT3(ALT_Q_TAB_STMT);
1395c1672
< DBMS_AQADM_INV.EXECUTE_STMT(ALT_Q_TAB_STMT);
---
> EXECUTE_STMT3(ALT_Q_TAB_STMT);
1404a1682
> EXECUTE_STMT_IN_KERNEL_CURSOR(CR_Q_TABIDX_STMT);
1406,1407d1683
<
< EXECUTE IMMEDIATE CR_Q_TABIDX_STMT;
1411c1687
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1421c1697,1702
< EXECUTE IMMEDIATE RCSTMT INTO ROWCNT;
---
>
> RC_BNDS := AQ$_BND_ARRAY();
> RC_CUR := KWQAEXGCUR(RCSTMT, RC_BNDS);
> FETCH RC_CUR INTO ROWCNT;
> CLOSE RC_CUR;
>
1432c1713
< EXECUTE IMMEDIATE ADDCLMN;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(ADDCLMN);
1450c1731,1733
< EXECUTE IMMEDIATE STMT USING QSSCHEMA,QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QSSCHEMA, QNAME));
>
1453c1736,1737
< EXECUTE IMMEDIATE STMT USING QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT, IN_STR_ARRAY => STR_ARRAY_TYPE(QNAME));
>
1458c1742,1746
< EXECUTE IMMEDIATE RCSTMT INTO ROWCNT;
---
>
> RC_BNDS := AQ$_BND_ARRAY();
> RC_CUR := KWQAEXGCUR(RCSTMT, RC_BNDS);
> FETCH RC_CUR INTO ROWCNT;
> CLOSE RC_CUR;
1468c1756
< EXECUTE IMMEDIATE DSTMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DSTMT);
1476c1764,1768
< EXECUTE IMMEDIATE RCSTMT INTO ROWCNT;
---
>
> RC_BNDS := AQ$_BND_ARRAY();
> RC_CUR := KWQAEXGCUR(RCSTMT, RC_BNDS);
> FETCH RC_CUR INTO ROWCNT;
> CLOSE RC_CUR;
1491c1783,1784
< EXECUTE IMMEDIATE STMT USING QSSCHEMA, QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QSSCHEMA, QNAME));
1495c1788
< EXECUTE IMMEDIATE STMT USING QNAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT, IN_STR_ARRAY => STR_ARRAY_TYPE(QNAME));
1501c1794,1799
< EXECUTE IMMEDIATE RCSTMT INTO ROWCNT;
---
>
> RC_BNDS := AQ$_BND_ARRAY();
> RC_CUR := KWQAEXGCUR(RCSTMT, RC_BNDS);
> FETCH RC_CUR INTO ROWCNT;
> CLOSE RC_CUR;
>
1511c1809
< EXECUTE IMMEDIATE DSTMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DSTMT);
1542c1840
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
1553c1851
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
1564c1862
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
1576c1874
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
1662a1961,1962
> RC_BNDS AQ$_BND_ARRAY;
> RC_CUR SYS_REFCURSOR;
1690c1990
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1711c2011
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1727c2027,2028
< EXECUTE IMMEDIATE STMT USING QT_SCHEMA,QT_NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QT_SCHEMA, QT_NAME));
1731c2032,2034
< EXECUTE IMMEDIATE DSTMT USING QT_NAME;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(DSTMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QT_NAME));
1737c2040,2044
< EXECUTE IMMEDIATE RCSTMT INTO ROWCNT;
---
>
> RC_BNDS := AQ$_BND_ARRAY();
> RC_CUR := KWQAEXGCUR(RCSTMT, RC_BNDS);
> FETCH RC_CUR INTO ROWCNT;
> CLOSE RC_CUR;
1746c2053,2054
< EXECUTE IMMEDIATE DSTMT;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(DSTMT);
1763c2071
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1775c2083
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1794c2102
< EXECUTE IMMEDIATE STMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
1810c2118,2120
< EXECUTE IMMEDIATE STMT USING QT_SCHEMA,QT_NAME;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(QT_SCHEMA, QT_NAME));
1815c2125,2126
< EXECUTE IMMEDIATE DSTMT;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(DSTMT);
1821c2132,2137
< EXECUTE IMMEDIATE RCSTMT INTO ROWCNT;
---
>
> RC_BNDS := AQ$_BND_ARRAY();
> RC_CUR := KWQAEXGCUR(RCSTMT, RC_BNDS);
> FETCH RC_CUR INTO ROWCNT;
> CLOSE RC_CUR;
>
1830c2146
< EXECUTE IMMEDIATE DSTMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DSTMT);
1848a2165
>
2016a2334,2335
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
2028c2347,2350
< EXECUTE IMMEDIATE UPDSTMT USING EXQNAME, QOBJID;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPDSTMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(EXQNAME),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(QOBJID));
2043c2365,2374
< EXECUTE IMMEDIATE SELSTMT INTO EXQOBJN USING EXQNAME, BASE_Q;
---
> SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => EXQNAME),
> AQ$_BND(STR_VAL => BASE_Q));
> SEL_CUR := KWQAEXGCUR(SELSTMT, SEL_BNDS);
> FETCH SEL_CUR INTO EXQOBJN;
> IF (SEL_CUR%NOTFOUND) THEN
> CLOSE SEL_CUR;
> RAISE NO_DATA_FOUND;
> ELSE
> CLOSE SEL_CUR;
> END IF;
2051c2382
< EXECUTE IMMEDIATE INSSTMT;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(INSSTMT);
2070c2401
< CRTTMPT BOOLEAN;
---
> CRTTMPT BOOLEAN;
2072a2404,2406
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
>
2085c2419,2421
< EXECUTE IMMEDIATE STMT_BUF;
---
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(STMT_BUF, BNDS);
> CLOSE CUR;
2098,2099c2434
<
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2103c2438,2439
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
>
2108c2444,2447
< EXECUTE IMMEDIATE STMT_BUF USING TABNAME,SCHEMA,OBJNUM;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_STR_ARRAY => STR_ARRAY_TYPE(TABNAME, SCHEMA),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(OBJNUM));
>
2124c2463,2465
< EXECUTE IMMEDIATE STMT_BUF USING OBJNUM;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(OBJNUM));
2134c2475,2477
< EXECUTE IMMEDIATE STMT_BUF;
---
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(STMT_BUF, BNDS);
> CLOSE CUR;
2151c2494,2495
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
>
2155c2499
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2164c2508,2510
< EXECUTE IMMEDIATE STMT_BUF USING TABNAME,SCHEMA,DOBJNUM;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_STR_ARRAY => STR_ARRAY_TYPE(TABNAME, SCHEMA),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(DOBJNUM));
2178c2524,2525
< EXECUTE IMMEDIATE STMT_BUF USING DOBJNUM;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(DOBJNUM));
2187c2534,2536
< EXECUTE IMMEDIATE STMT_BUF;
---
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(STMT_BUF, BNDS);
> CLOSE CUR;
2199a2549
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2201d2550
< EXECUTE IMMEDIATE STMT_BUF;
2211c2560,2561
< EXECUTE IMMEDIATE STMT_BUF USING SCHEMA,NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_STR_ARRAY => STR_ARRAY_TYPE(SCHEMA, NAME));
2220c2570,2573
< EXECUTE IMMEDIATE STMT_BUF;
---
>
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(STMT_BUF, BNDS);
> CLOSE CUR;
2235,2236c2588,2589
<
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
>
2241c2594,2595
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
>
2250c2604,2607
< EXECUTE IMMEDIATE STMT_BUF USING NAME, SCHEMA, QOBJID, QOBJID;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_STR_ARRAY => STR_ARRAY_TYPE(NAME, SCHEMA),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(QOBJID, QOBJID));
>
2264,2265c2621,2625
< EXECUTE IMMEDIATE STMT_BUF USING QOBJID, QOBJID;
< UPDATE_EXCEPTION_META(QOBJID,SCHEMA,TMPTABNAME);
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(QOBJID, QOBJID));
>
> UPDATE_EXCEPTION_META(QOBJID,SCHEMA,TMPTABNAME);
2274c2634,2636
< EXECUTE IMMEDIATE STMT_BUF;
---
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(STMT_BUF, BNDS);
> CLOSE CUR;
2284c2646
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2290c2652
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2297c2659
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2304c2666
< EXECUTE IMMEDIATE STMT_BUF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT_BUF);
2309,2371d2670
<
< PROCEDURE AQ_INTERNAL_EXESTMT(
< SQL_STMT IN VARCHAR2,
< OPCODE IN NUMBER DEFAULT NULL,
< BYPASS_DV IN BOOLEAN DEFAULT TRUE,
< BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
< IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
< IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
< OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
< OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_RAW_PARAM1 IN RAW DEFAULT NULL,
< IN_RAW_PARAM2 IN RAW DEFAULT NULL,
< IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
< IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
< IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
< IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
< IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< OUT_RAW_PARAM1 OUT RAW,
< OUT_RAW_PARAM2 OUT RAW,
< OUT_BINT_PARAM1 OUT BINARY_INTEGER,
< OUT_BINT_PARAM2 OUT BINARY_INTEGER,
< OUT_INT_PARAM1 OUT PLS_INTEGER,
< OUT_INT_PARAM2 OUT PLS_INTEGER,
< OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
< OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
< IS EXTERNAL
< NAME "aq_internal_exeStmt"
< WITH CONTEXT
< PARAMETERS(CONTEXT,
< SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
< OPCODE OCINUMBER, OPCODE INDICATOR SB2,
< BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
< BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
< IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
< IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
< IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
< IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
< OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
< OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
< OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
< OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
< IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
< IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
< IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
< IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
< IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
< IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
< IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
< IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
< OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
< OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
< OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
< OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
< OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
< OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
< OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
< OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
< LIBRARY DBMS_AQINT_LIB;
1397a1398
> L_DBID NUMBER;
1412c1413,1417
<
---
> L_DBID := CONTEXT.DBID;
> IF CONTEXT.IS_LOCAL THEN
> L_DBID := NVL(CONTEXT.LOCAL_CONDBID, CONTEXT.LOCAL_DBID);
> END IF;
>
1466c1471
< USING CONTEXT.DBID,
---
> USING L_DBID,
1471c1476
< CONTEXT.DBID;
---
> L_DBID;
1517c1522
< USING CONTEXT.DBID,
---
> USING L_DBID,
1521c1526
< CONTEXT.DBID,
---
> L_DBID,
1732c1737
< IF CONTEXT.DISK_COMP_VER >= VER_12 THEN
---
> IF CONTEXT.IS_CDB_ROOT THEN
1764,1765c1769,1774
< FROM base_os_stat s1 FULL OUTER JOIN base_os_stat s2
< ON (s1.snap_id = s2.snap_id
---
> FROM (SELECT snap_id, instance_number, value FROM base_os_stat
> WHERE stat_name = 'NUM_CPUS') s1
> FULL OUTER JOIN
> (SELECT snap_id, instance_number, value FROM base_os_stat
> WHERE stat_name = 'NUM_CPUS_CORES') s2
> ON (s1.snap_id = s2.snap_id
1767d1775
< WHERE s1.stat_name = 'NUM_CPUS' and s2.stat_name = 'NUM_CPU_CORES'
1785c1793,1797
< FROM base_param s1 FULL OUTER JOIN base_param s2
---
> FROM (SELECT snap_id, instance_number, value FROM base_param
> WHERE parameter_name = 'cpu_count') s1
> FULL OUTER JOIN
> (SELECT snap_id, instance_number, value FROM base_param
> WHERE parameter_name = 'resource_manager_plan') s2
1788,1789d1799
< WHERE s1.parameter_name = 'cpu_count'
< AND s2.parameter_name = 'resource_manager_plan'
1813c1823,1824
< LEAST(MAX(a.num_cpus), SUM(a.cpu_limit)) as cpu_limit
---
> LEAST(NVL(MAX(a.num_cpus), SUM(a.cpu_limit)),
> SUM(a.cpu_limit)) as cpu_limit
1855c1866
< OR value <> p_value
---
> OR NVL(value,-1) <> NVL(p_value,-1)
1872,1874c1883,1885
< USING CONTEXT.DBID, CONTEXT.BEGINSNAPID, CONTEXT.ENDSNAPID, CONTEXT.DBID,
< CONTEXT.DBID, CONTEXT.BEGINSNAPID, CONTEXT.ENDSNAPID,
< CONTEXT.DBID, CONTEXT.BEGINSNAPID, CONTEXT.ENDSNAPID;
---
> USING CONTEXT.DBID, CONTEXT.BEGINSNAPID-1, CONTEXT.ENDSNAPID, CONTEXT.DBID,
> CONTEXT.DBID, CONTEXT.BEGINSNAPID-1, CONTEXT.ENDSNAPID,
> CONTEXT.DBID, CONTEXT.BEGINSNAPID-1, CONTEXT.ENDSNAPID;
3754,3768c3765,3797
< L_TEXT := L_TEXT ||
< q'[, user_names as
< (SELECT id, sys.dbms_ash.fetch_user_name(user_id, %con_dbid%,]'
< || L_TIME_LIMIT || q'[) as name
< FROM map_user_id
< WHERE id <= ]' || L_TOP_LIMIT || q'[
< AND user_id >= 0)
< , user_name_xml as
< (SELECT
< XMLELEMENT("user_id", XMLAGG( XMLELEMENT("m",
< XMLATTRIBUTES( m.id as "i"
< , m.user_id as "v" %con_dbid_attr%
< , n.name as "name" )))) as xml
< FROM map_user_id m, user_names n
< WHERE m.id = n.id(+)) ]';
---
> IF CONTEXT.IS_CDB_ROOT OR CONTEXT.LOCAL_COMP_VER < VER_12_2 THEN
> L_TEXT := L_TEXT ||
> q'[, user_names as
> (SELECT id, sys.dbms_ash.fetch_user_name(user_id, %con_dbid%,]'
> || L_TIME_LIMIT || q'[) as name
> FROM map_user_id
> WHERE id <= ]' || L_TOP_LIMIT || q'[
> AND user_id >= 0)
> , user_name_xml as
> (SELECT
> XMLELEMENT("user_id", XMLAGG( XMLELEMENT("m",
> XMLATTRIBUTES( m.id as "i"
> , m.user_id as "v" %con_dbid_attr%
> , n.name as "name" )))) as xml
> FROM map_user_id m, user_names n
> WHERE m.id = n.id(+)) ]';
> ELSE
> L_TEXT := L_TEXT ||
> q'[, user_names as
> (SELECT m.id, u.username as name,
> decode(u.common,'YES', 'y', 'n') as common
> FROM map_user_id m, dba_users u
> WHERE m.user_id = u.user_id)
> , user_name_xml as
> (SELECT
> XMLELEMENT("user_id", XMLAGG( XMLELEMENT("m",
> XMLATTRIBUTES( m.id as "i"
> , m.user_id as "v" %con_dbid_attr%
> , n.name as "name"
> , n.common as "c" )))) as xml
> FROM map_user_id m, user_names n
> WHERE m.id = n.id(+)) ]';
> END IF;
2650c2650
< FROM sys.gv_$sql v
---
> FROM sys.v_$sql v
2652d2651
< %join_inst_id_predicate%
2677c2676
< FROM sys.gv_$sql v
---
> FROM sys.v_$sql v
2680d2678
< %join_inst_id_predicate%
2706c2704
< FROM sys.gv_$sql v
---
> FROM sys.v_$sql v
2709d2706
< %join_inst_id_predicate%
3095c3092
< FROM sys.gv_$active_services v
---
> FROM sys.v_$active_services v
3097d3093
< %join_inst_id_predicate%
4579,4589c4575,4592
< (SELECT ' || COLUMNLIST ||
< ', decode(binds.diskEnable,0,1,binds.filterRatio)
< as sample_count
< , inst_id as instance_number
< FROM sys.gv_$active_session_history a, binds
< WHERE binds.memEnable = 1
< AND ( binds.diskEnable = 0
< OR ( binds.diskEnable = 1
< AND a.is_awr_sample = ''Y''
< AND bitand(a.flags, 128) = 0 ) )
< AND a.inst_id between
---
> (SELECT ' || COLUMNLIST || '
> , decode(binds.diskEnable,0,1,binds.filterRatio) as sample_count
> , userenv(''instance'') AS instance_number
> FROM
> table(gv$(cursor(
> SELECT ' || COLUMNLIST ||
> ', a.is_awr_sample
> , a.TIME_MODEL
> , userenv(''instance'') inst_id
> FROM v$active_session_history a
> ))) a
> , binds
> WHERE binds.memEnable = 1
> AND ( binds.diskEnable = 0
> OR ( binds.diskEnable = 1
> AND a.is_awr_sample = ''Y''
> AND bitand(a.flags, 128) = 0 ) )
> AND a.inst_id between
4592c4595
< AND a.sample_time between
---
> AND a.sample_time between
4594c4597
< and binds.endTime
---
> and binds.endTime
4598c4601
< , instance_number as instance_number
---
> , instance_number as instance_number
4603,4605c4606,4608
< AND a.instance_number between
< binds.instIdLow
< and binds.instIdHigh
---
> AND a.instance_number between
> binds.instIdLow
> and binds.instIdHigh
6672,6718c6675,6724
< instances as
< (SELECT host_name,
< instance_number
< FROM sys.gv_$instance
< WHERE instance_number between :inst_id_low and :inst_id_high)
< , num_cpus as
< (SELECT i.host_name,
< i.instance_number,
< sum(decode(o.stat_name, 'NUM_CPU_CORES', o.value, 0))
< num_cpu_cores,
< sum(decode(o.stat_name, 'NUM_CPUS', o.value, 0)) num_cpus
< FROM instances i, sys.gv_$osstat o
< WHERE o.inst_id = i.instance_number
< GROUP BY i.instance_number, i.host_name)
< , inst_caging_cpu_count as
< (SELECT i.host_name,
< i.instance_number,
< max(nvl(to_number(p.value), 0))
< cpu_count
< FROM instances i, sys.gv_$system_parameter p,
< sys.gv_$rsrc_plan r
< WHERE p.name= 'cpu_count'
< AND i.instance_number = p.inst_id
< AND r.inst_id = p.inst_id
< AND r.is_top_plan = 'TRUE'
< AND r.cpu_managed = 'ON'
< AND r.instance_caging = 'ON'
< GROUP BY host_name, instance_number)
< SELECT xmlelement("cpu_info",
< xmlagg(
< xmlelement("host",
< xmlattributes(host_name as "name",
< max(num_cpus) as "num_cores",
< max(num_cpu_cores) as "num_cpus"),
< xmlagg(
< xmlelement("instance",
< xmlattributes(instance_number as "id",
< cpu_count as "cpu_count"))
< order by instance_number))))
< as xml
< FROM (SELECT c.host_name, c.instance_number,
< nvl(c.num_cpus,c.num_cpu_cores) as num_cpus,
< nvl(c.num_cpu_cores, c.num_cpus) as num_cpu_cores,
< p.cpu_count
< FROM num_cpus c, inst_caging_cpu_count p
< WHERE p.instance_number(+) = c.instance_number)
< GROUP BY host_name#';
---
> num_cpus as (
> SELECT host_name, instance_number, num_cpu_cores, num_cpus
> FROM table(gv$(cursor(
> SELECT host_name, instance_number,
> sum(decode(stat_name, 'NUM_CPU_CORES', value, 0)) num_cpu_cores,
> sum(decode(stat_name, 'NUM_CPUS', value, 0)) num_cpus
> FROM v$instance, v$osstat o
> WHERE instance_number between :inst_id_low and :inst_id_high
> GROUP BY host_name , instance_number
> )))
> ),
> inst_caging_cpu_count as (
> SELECT instance_number, cpu_count
> FROM table(gv$(cursor(
> SELECT userenv('instance') instance_number,
> MAX(NVL(to_number(p.value), 0)) cpu_count
> FROM v$system_parameter p, v$rsrc_plan r
> WHERE
> p.name = 'cpu_count'
> AND r.is_top_plan = 'TRUE'
> AND r.cpu_managed = 'ON'
> AND r.instance_caging = 'ON'
> AND p.con_id IN (0, SYS_CONTEXT('USERENV','CON_ID'))
> AND r.con_id IN (0, SYS_CONTEXT('USERENV','CON_ID'))
> AND userenv('instance') between :inst_id_low and :inst_id_high
> GROUP BY userenv('instance')
> ))) i
> )
> SELECT xmlelement("cpu_info",
> xmlagg(
> xmlelement("host",
> xmlattributes(host_name as "name",
> max(num_cpus) as "num_cores",
> max(num_cpu_cores) as "num_cpus"
> ),
> xmlagg(
> xmlelement("instance",
> xmlattributes(instance_number as "id",
> cpu_count as "cpu_count"))
> order by instance_number))
> )) as xml
> FROM (
> SELECT c.host_name, c.instance_number,
> nvl(c.num_cpus,c.num_cpu_cores) as num_cpus,
> nvl(c.num_cpu_cores, c.num_cpus) as num_cpu_cores,
> p.cpu_count
> FROM num_cpus c, inst_caging_cpu_count p
> WHERE p.instance_number(+) = c.instance_number
> )
> GROUP BY host_name#';
6723a6730,6731
> PRINT_BIND('inst_id_low' , CONTEXT.INSTIDLOW, TRUE);
> PRINT_BIND('inst_id_high', CONTEXT.INSTIDHIGH, TRUE);
6730c6738
< USING INSTIDLOW, INSTIDHIGH;
---
> USING INSTIDLOW, INSTIDHIGH, INSTIDLOW, INSTIDHIGH;
274a275,286 > > > > > > > > > > > > 360a373,376 > > > > 362,363c378,379 < OWNNAME VARCHAR2 DEFAULT NULL, < TABNAME VARCHAR2 DEFAULT NULL) IS --- > OWNER VARCHAR2, > TABLE_NAME VARCHAR2) IS 365,367c381,383 < OWNER DBMS_ID; < TABU DBMS_ID; < STMT VARCHAR2(32767); --- > OWNERU DBMS_ID; > TABU DBMS_ID; > STMT VARCHAR2(32767); 410,411c426,427 < DBMS_STATS_INTERNAL.UPCASE(OWNNAME, OWNER); < DBMS_STATS_INTERNAL.UPCASE(TABNAME, TABU); --- > SYS.DBMS_STATS_INTERNAL.UPCASE(OWNER, OWNERU); > SYS.DBMS_STATS_INTERNAL.UPCASE(TABLE_NAME, TABU); 415c431 < IF (OWNER IS NULL) THEN --- > IF (OWNERU IS NULL) THEN 418,419c434,435 < VALIDATE_SCHEMA(OWNER); < VALIDATE_TABLE(OWNER, TABU); --- > VALIDATE_SCHEMA(OWNERU); > VALIDATE_TABLE(OWNERU, TABU); 421,422c437,438 < ELSIF (OWNER IS NOT NULL) THEN < VALIDATE_SCHEMA(OWNER); --- > ELSIF (OWNERU IS NOT NULL) THEN > VALIDATE_SCHEMA(OWNERU); 425c441 < FOR CUR IN SEC_INDEX_CUR(OWNER, TABU) LOOP --- > FOR CUR IN SEC_INDEX_CUR(OWNERU, TABU) LOOP 433c449 < IF (DBMS_STATS_INTERNAL.IS_URGENT_ERROR) THEN --- > IF (TABU IS NOT NULL OR SYS.DBMS_STATS_INTERNAL.IS_URGENT_ERROR) THEN 440a457,540 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > PROCEDURE DROP_AUTO_INDEXES( > OWNER VARCHAR2, > INDEX_NAME VARCHAR2, > ALLOW_RECREATE BOOLEAN DEFAULT FALSE) > IS > OWNERU DBMS_ID; > INDU DBMS_ID; > STMT VARCHAR2(32767); > > CURSOR AUTO_INDEX_CUR(P_OWNER DBMS_ID, P_INDNAME VARCHAR2) IS > SELECT /*+dynamic_sampling(11)*/ > OWNER, INDEX_NAME > FROM SYS.ALL_INDEXES I > WHERE (P_OWNER IS NULL OR OWNER = P_OWNER) > AND (P_INDNAME IS NULL OR INDEX_NAME = P_INDNAME) > AND AUTO = 'YES'; > > BEGIN > SYS.DBMS_STATS_INTERNAL.UPCASE(OWNER, OWNERU); > SYS.DBMS_STATS_INTERNAL.UPCASE(INDEX_NAME, INDU); > > > IF (INDU IS NOT NULL) THEN > IF (OWNERU IS NULL) THEN > RAISE INVALID_SCHEMA_NAME; > ELSE > VALIDATE_SCHEMA(OWNERU); > END IF; > ELSIF (OWNERU IS NOT NULL) THEN > VALIDATE_SCHEMA(OWNERU); > END IF; > > FOR CUR IN AUTO_INDEX_CUR(OWNERU, INDU) LOOP > > BEGIN > STMT := 'DROP INDEX ' || SYS.DBMS_STATS_INTERNAL.DQ(CUR.OWNER) || '.' > || SYS.DBMS_STATS_INTERNAL.DQ(CUR.INDEX_NAME); > EXECUTE IMMEDIATE STMT; > EXCEPTION > WHEN OTHERS THEN > IF (INDU IS NOT NULL OR SYS.DBMS_STATS_INTERNAL.IS_URGENT_ERROR) THEN > RAISE; > END IF; > END; > > END LOOP; > > DBMS_AUTO_INDEX_INTERNAL.SET_DROPPED_INDEX_STATUS( > SYS.DBMS_STATS_INTERNAL.DQ(OWNERU), SYS.DBMS_STATS_INTERNAL.DQ(INDU), > ALLOW_RECREATE); > END DROP_AUTO_INDEXES;
8a9,18
>
> INVALID_INDEX EXCEPTION;
> PRAGMA EXCEPTION_INIT(INVALID_INDEX, -953);
>
>
> AI_INVALID_ARGUMENT CONSTANT NUMBER := -28104;
>
>
> ERR_INVALID_PARAM_NAME CONSTANT NUMBER := -38133;
> ERR_INVALID_PARAM_VALUE CONSTANT NUMBER := -38134;
61a72,73
> AI_INDF_DISRECREATE CONSTANT NUMBER := 512;
>
64c76,77
< AI_INDF_RETAINED_FLAGS CONSTANT NUMBER := AI_INDF_MISESTIMATED;
---
> AI_INDF_RETAINED_FLAGS CONSTANT NUMBER :=
> AI_INDF_MISESTIMATED + AI_INDF_DISRECREATE;
261c274,275
< AI_REPORT_RETENTION_DEFAULT CONSTANT NUMBER := 31;
---
>
> AI_REPORT_RETENTION_DEFAULT CONSTANT NUMBER := 373;
425a440,444
> AI_OPTIMIZER_ADHOC CONSTANT NUMBER := 0;
> AI_OPTIMIZER_NORMAL CONSTANT NUMBER := 1;
> AI_OPTIMIZER_CRITICAL CONSTANT NUMBER := 2;
>
>
1748a1768
> DISALLOW_RECREATE NUMBER := 0;
1752a1773,1782
>
> SELECT COUNT(*) INTO DISALLOW_RECREATE
> FROM WRI$_ADV_OBJECTS O
> WHERE O.ID = OBJ_ID
> AND BITAND(O.ATTR10, AI_INDF_DISRECREATE) = AI_INDF_DISRECREATE;
>
> IF (DISALLOW_RECREATE > 0) THEN
> DUMP_TRACE(INDEX_NAME || ' is not allowed to be recreated');
> RETURN OBJ_ID;
> END IF;
3348a3379
> PART_CLIST VARCHAR2(32767);
3444a3476
>
3446c3478,3492
< PROP := BITOR(PROP, AI_KQLDINP_PTI);
---
>
>
> SELECT LISTAGG(DBMS_STATS_INTERNAL.DQ(C.COLUMN_NAME), ',')
> WITHIN GROUP (ORDER BY C.COLUMN_POSITION) PART_CLIST
> INTO PART_CLIST
> FROM DBA_PART_KEY_COLUMNS C
> WHERE C.NAME = TAB
> AND C.OWNER = OWN
> AND C.OBJECT_TYPE = 'TABLE';
>
>
>
> IF (INSTR(COL_LIST, PART_CLIST) = 1) THEN
> PROP := BITOR(PROP, AI_KQLDINP_PTI);
> END IF;
3831a3878,3879
> ELSIF (BIT_TO_SET = AI_INDF_DISRECREATE) THEN
> COMPLEMENT := 0;
4015a4064
> AND BITAND(FLAGS, AI_INDF_DISRECREATE) = 0
4033c4082
<
---
>
4680,4681c4729,4734
< IF (FIRST_PLAN = TRUE OR CUR.LAST_VERIFIED IS NULL
< OR CUR.LAST_VERIFIED < EXEC_START_TIME) THEN
---
>
>
>
>
>
>
4682a4736,4737
> IF (FIRST_PLAN = TRUE OR CUR.LAST_VERIFIED IS NULL
> OR CUR.LAST_VERIFIED < EXEC_START_TIME) THEN
4684,4695c4739,4759
< STMT :=
< q'#declare
< accepted_cnt pls_integer;
< begin
< accepted_cnt := dbms_spm.alter_sql_plan_baseline(null,#' ||
< FIXQ(DBMS_ASSERT.SIMPLE_SQL_NAME(CUR.PLAN_NAME)) ||
< q'#, '_ACCEPTED', 'YES'); end;#';
<
< RET_CODE :=
< DDL_EXECUTE(AI_CTX, CUR.SQL_OBJ_ID, AI_KEA_CMD_DISALLOW_AUTO_INDEX,
< STMT);
<
---
> STMT :=
> q'#declare
> accepted_cnt pls_integer;
> begin
> accepted_cnt := dbms_spm.alter_sql_plan_baseline(null,#' ||
> FIXQ(DBMS_ASSERT.SIMPLE_SQL_NAME(CUR.PLAN_NAME)) ||
> q'#, '_ACCEPTED', 'YES'); end;#';
>
> ELSIF (CUR.LAST_VERIFIED IS NOT NULL) THEN
> STMT :=
> q'#declare
> accepted_cnt pls_integer;
> begin
> accepted_cnt := dbms_spm.drop_sql_plan_baseline(plan_name=>q'# ||
> fixq(DBMS_ASSERT.SIMPLE_SQL_NAME(cur.plan_name)) || q'#) end;#';
> END IF;
>
> RET_CODE :=
> DDL_EXECUTE(AI_CTX, CUR.SQL_OBJ_ID, AI_KEA_CMD_DISALLOW_AUTO_INDEX,
> STMT);
>
4697,4702c4761,4766
< WHEN OTHERS THEN
< IF (IS_URGENT_ERROR) THEN
< RAISE;
< ELSE
< LOG_STACK_ERROR(AI_CTX, SQLCODE, SQLERRM, CUR.SQL_OBJ_ID);
< END IF;
---
> WHEN OTHERS THEN
> IF (IS_URGENT_ERROR) THEN
> RAISE;
> ELSE
> LOG_STACK_ERROR(AI_CTX, SQLCODE, SQLERRM, CUR.SQL_OBJ_ID);
> END IF;
4704,4705d4767
< END IF;
<
6596a6659,6685
>
> CURSOR AI_UNUSABLE_CUR IS
> SELECT DISTINCT INDEX_OWNER, INDEX_NAME
> FROM (
> SELECT IO.INDEX_OWNER, IO.INDEX_NAME
> FROM "_auto_index_ind_objects" IO, DBA_INDEXES I
> WHERE IO.INDEX_NAME = I.INDEX_NAME
> AND IO.INDEX_OWNER = I.OWNER
> AND BITAND(IO.PROPERTY, AI_KQLDINP_PTI) = 0
> AND BITAND(IO.FLAGS, AI_INDF_VALID) != 0
> AND I.STATUS = 'UNUSABLE'
> UNION
> SELECT IO.INDEX_OWNER, IO.INDEX_NAME
> FROM "_auto_index_ind_objects" IO, DBA_IND_PARTITIONS I
> WHERE IO.INDEX_NAME = I.INDEX_NAME
> AND IO.INDEX_OWNER = I.INDEX_OWNER
> AND BITAND(IO.PROPERTY, AI_KQLDINP_PTI) != 0
> AND BITAND(IO.FLAGS, AI_INDF_VALID) != 0
> AND I.STATUS = 'UNUSABLE'
> UNION
> SELECT IO.INDEX_OWNER, IO.INDEX_NAME
> FROM "_auto_index_ind_objects" IO, DBA_IND_SUBPARTITIONS I
> WHERE IO.INDEX_NAME = I.INDEX_NAME
> AND IO.INDEX_OWNER = I.INDEX_OWNER
> AND BITAND(IO.PROPERTY, AI_KQLDINP_PTI) != 0
> AND BITAND(IO.FLAGS, AI_INDF_VALID) != 0
> AND I.STATUS = 'UNUSABLE');
6610a6700,6716
>
>
>
> BEGIN
>
> FOR CUR IN AI_UNUSABLE_CUR LOOP
> RET_CODE := INDEX_DDL(AI_CTX, AI_KEA_CMD_REBUILD_INDEX,
> CUR.INDEX_OWNER, CUR.INDEX_NAME);
> END LOOP;
> COMMIT;
>
> EXCEPTION
> WHEN OTHERS THEN
> IF (IS_URGENT_ERROR) THEN
> RAISE;
> END IF;
> END;
6753a6860,6862
>
>
>
7043c7152
< CE
---
> DBMS_AUTO_INDEX_INTERNAL.AUTO_INDEX_ALLOW(CE) SESSION_TYPE
7103c7212,7213
< ORDER BY ELAPSED_TIME DESC;
---
> ORDER BY DBMS_AUTO_INDEX_INTERNAL.AUTO_INDEX_ALLOW(CE) DESC,
> ELAPSED_TIME DESC;
7185c7295,7296
< IF (AUTO_INDEX_ALLOW(CUR.CE) = 0) THEN
---
>
> IF (CUR.SESSION_TYPE = AI_OPTIMIZER_ADHOC) THEN
8748a8860,8872
>
>
>
>
>
> IF (BITAND(P_VALUE, AI_CTRL_SPM_EVOLVE) != 0 AND
> GET_AI_PARAM_VALUE_CLOB(AI_PARAM_MODE) <> AI_MODE_OFF) THEN
>
> DUMP_TRACE('Enable Auto Regression Fixing when setting ai_control');
> DBMS_ADVISOR.SET_TASK_PARAMETER(
> DBMS_SPM_INTERNAL.AUTO_INDEX_EVOLVE_TASK_NAME,
> 'ALTERNATE_PLAN_BASELINE', 'AUTO');
> END IF;
8855a8980
>
8861c8986,8988
< WHERE TABLESPACE_NAME = P_VALUE;
---
> WHERE TABLESPACE_NAME = P_VALUE
> AND CONTENTS = 'PERMANENT'
> AND TABLESPACE_NAME NOT IN ('SYSTEM', 'SYSAUX', 'SYSEXT');
8883a9011,9022
>
>
>
>
>
> IF (BITAND(GET_AI_PARAM_VALUE_NUM(AI_PARAM_CONTROL),
> AI_CTRL_SPM_EVOLVE) != 0) THEN
> DUMP_TRACE('Enable Auto Regression Fixing when setting ai_mode');
> DBMS_ADVISOR.SET_TASK_PARAMETER(
> DBMS_SPM_INTERNAL.AUTO_INDEX_EVOLVE_TASK_NAME,
> 'ALTERNATE_PLAN_BASELINE', 'AUTO');
> END IF;
9233a9373,9402
>
>
>
>
>
>
>
>
>
>
>
>
> FUNCTION EXIST_SMB_PARAMETER(PARAMETER_NAME VARCHAR2)
> RETURN BOOLEAN
> IS
> EXIST_CNT NUMBER;
> BEGIN
>
> SELECT COUNT(*) INTO EXIST_CNT
> FROM SMB$CONFIG T
> WHERE EXIST_SMB_PARAMETER.PARAMETER_NAME = T.PARAMETER_NAME;
>
> IF (EXIST_CNT > 0) THEN
> RETURN TRUE;
> ELSE
> RETURN FALSE;
> END IF;
>
> END EXIST_SMB_PARAMETER;
>
9239,9246c9408,9417
<
< IF CUR.DATA_TYPE = AI_PARAM_TYPE_NUM THEN
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE)
< VALUES (CUR.PNAME, TO_NUMBER(CUR.DEFAULT_VALUE));
< ELSIF CUR.DATA_TYPE = AI_PARAM_TYPE_CHAR OR
< CUR.DATA_TYPE = AI_PARAM_TYPE_XML THEN
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
< VALUES (CUR.PNAME, 0, CUR.DEFAULT_VALUE);
---
> IF (EXIST_SMB_PARAMETER(CUR.PNAME) = FALSE) THEN
> IF CUR.DATA_TYPE = AI_PARAM_TYPE_NUM THEN
> INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE)
> VALUES (CUR.PNAME, TO_NUMBER(CUR.DEFAULT_VALUE));
> ELSIF CUR.DATA_TYPE = AI_PARAM_TYPE_CHAR OR
> CUR.DATA_TYPE = AI_PARAM_TYPE_XML THEN
> INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE,
> PARAMETER_DATA)
> VALUES (CUR.PNAME, 0, CUR.DEFAULT_VALUE);
> END IF;
10321c10492,10561
<
---
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> PROCEDURE SET_DROPPED_INDEX_STATUS(
> OWNER IN DBMS_ID,
> INDEX_NAME IN DBMS_ID,
> ALLOW_RECREATE IN BOOLEAN)
> IS
> FLAG NUMBER := NULL;
> AI_CTX AI_CTX_TYPE;
> OWNERU DBMS_ID;
> INDU DBMS_ID;
> SET_CNT NUMBER := 0;
> CURSOR CAND_DROP_INDEX_CUR(P_OWNER DBMS_ID, P_INDNAME DBMS_ID) IS
> SELECT
> FLAGS, INDEX_OWNER OWNER, INDEX_NAME IND_NAME, OBJECT_ID
> FROM "_auto_index_ind_objects" I
> WHERE (P_OWNER IS NULL OR INDEX_OWNER = P_OWNER)
> AND (P_INDNAME IS NULL OR INDEX_NAME = P_INDNAME)
> AND NOT EXISTS (SELECT 1
> FROM SYS.IND$ IND
> WHERE IND.OBJ# = I.INDEX_OBJ#)
> ORDER BY INDEX_OWNER, INDEX_NAME;
>
> BEGIN
>
> IF (ALLOW_RECREATE IS NULL) THEN
> DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(AI_INVALID_ARGUMENT,
> 'ALLOW_RECREATE');
> END IF;
>
> SYS.DBMS_STATS_INTERNAL.UPCASE(OWNER, OWNERU);
> SYS.DBMS_STATS_INTERNAL.UPCASE(INDEX_NAME, INDU);
>
> INIT_AI_CTX(AI_CTX, NULL,NULL,NULL);
>
> FOR CUR IN CAND_DROP_INDEX_CUR(OWNERU, INDU) LOOP
> SET_CNT := SET_CNT + 1;
> FLAG := CUR.FLAGS;
> FLAG := GET_INDEX_DDL_FLAG_TO_SET(FLAG, AI_INDF_DROPPED);
> DUMP_TRACE('set index: ' || INDU || ' dropped.');
> IF (NOT ALLOW_RECREATE) THEN
> FLAG := GET_INDEX_DDL_FLAG_TO_SET(FLAG, AI_INDF_DISRECREATE);
> DUMP_TRACE('disallow ' || INDU || ' to be recreated');
> ELSIF(BITAND(FLAG, AI_INDF_DISRECREATE) = AI_INDF_DISRECREATE) THEN
> DUMP_TRACE('allow ' || INDU || ' to be recreated');
> FLAG := FLAG - AI_INDF_DISRECREATE;
> END IF;
>
> UPDATE_INDEX_OBJECT(AI_CTX, CUR.OBJECT_ID, NULL, FLAG, NULL, NULL);
>
> END LOOP;
>
> IF (INDU IS NOT NULL AND SET_CNT = 0) THEN
> RAISE INVALID_INDEX;
> END IF;
>
> END SET_DROPPED_INDEX_STATUS;
189a190,210 > > > > > FUNCTION GETMAXVCSIZE RETURN NUMBER > IS > MAXVC VARCHAR2(30); > RET NUMBER := 4000; > BEGIN > > SELECT VALUE INTO MAXVC > FROM V$PARAMETER > WHERE LOWER(NAME) = 'max_string_size'; > > IF (MAXVC = 'EXTENDED') THEN > RET := 32767; > END IF; > > RETURN RET; > END; >
35c35
< TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512);
---
> TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
67a68,82
> OBJECT_ALREADY_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(OBJECT_ALREADY_EXISTS, -955);
>
>
>
>
>
>
> FUNCTION KWQAEXGCUR(STMT IN VARCHAR2,
> BND_ARRAY IN OUT AQ$_BND_ARRAY,
> USER IN VARCHAR2 DEFAULT NULL,
> FLAGS IN PLS_INTEGER DEFAULT NULL,
> OPCODE IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> PRAGMA INTERFACE(C, KWQAEXGCUR);
127a143,351
>
> PROCEDURE AQ_INTERNAL_EXESTMT(
> SQL_STMT IN VARCHAR2,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
> OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
> OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
> IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
> IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
> IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> OUT_RAW_PARAM1 OUT RAW,
> OUT_RAW_PARAM2 OUT RAW,
> OUT_BINT_PARAM1 OUT BINARY_INTEGER,
> OUT_BINT_PARAM2 OUT BINARY_INTEGER,
> OUT_INT_PARAM1 OUT PLS_INTEGER,
> OUT_INT_PARAM2 OUT PLS_INTEGER,
> OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
> OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
> IS EXTERNAL
> NAME "aq_internal_exeStmt"
> WITH CONTEXT
> PARAMETERS(CONTEXT,
> SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
> OPCODE OCINUMBER, OPCODE INDICATOR SB2,
> BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
> BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
> IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
> IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
> IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
> IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
> OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
> OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
> OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
> OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
> IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
> IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
> IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
> IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
> IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
> IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
> IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
> IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
> OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
> OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
> OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
> OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
> OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
> OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
> OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
> OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
> LIBRARY DBMS_AQINT_LIB;
>
>
>
>
> PROCEDURE EXECUTE_STMT_IN_KERNEL_CURSOR(
> SQL_STMT IN VARCHAR2,
> IGNORE_DDL IN BOOLEAN DEFAULT TRUE,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL) IS
>
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW_PRM1 RAW(32737);
> OUT_RAW_PRM2 RAW(32737);
> OUT_BINT_PRM1 BINARY_INTEGER;
> OUT_BINT_PRM2 BINARY_INTEGER;
> OUT_INT_PRM1 PLS_INTEGER;
> OUT_INT_PRM2 PLS_INTEGER;
> OUT_TIME_PRM1 TIMESTAMP WITH TIME ZONE;
> OUT_TIME_PRM2 TIMESTAMP WITH TIME ZONE;
> BEGIN
> AQ_INTERNAL_EXESTMT(
> SQL_STMT => SQL_STMT,
> OPCODE => OPCODE,
> BYPASS_DV => BYPASS_DV,
> BYPASS_AUDIT => BYPASS_AUDIT,
> IN_STR_ARRAY => IN_STR_ARRAY,
> IN_STRPOS_ARRAY=> IN_STRPOS_ARRAY,
> IN_NUM_ARRAY => IN_NUM_ARRAY,
> IN_NUMPOS_ARRAY=> IN_NUMPOS_ARRAY,
> IN_RAW_PARAM1 => IN_RAW_PARAM1,
> IN_RAW_PARAM2 => IN_RAW_PARAM2,
> IN_TIME_PARAM1 => IN_TIME_PARAM1,
> IN_TIME_PARAM2 => IN_TIME_PARAM2,
> OUT_STR_ARRAY => OUT_STR_ARR,
> OUT_STRPOS_ARRAY=> NULL,
> OUT_NUM_ARRAY => OUT_NUM_ARR,
> OUT_NUMPOS_ARRAY=> NULL,
> IN_BINT_PARAM1 => NULL,
> IN_BINT_PARAM2 => NULL,
> IN_INT_PARAM1 => NULL,
> IN_INT_PARAM2 => NULL,
> OUT_RAW_PARAM1 => OUT_RAW_PRM1,
> OUT_RAW_PARAM2 => OUT_RAW_PRM2,
> OUT_BINT_PARAM1=> OUT_BINT_PRM1,
> OUT_BINT_PARAM2=> OUT_BINT_PRM2,
> OUT_INT_PARAM1 => OUT_INT_PRM1,
> OUT_INT_PARAM2 => OUT_INT_PRM2,
> OUT_TIME_PARAM1=> OUT_TIME_PRM1,
> OUT_TIME_PARAM2=> OUT_TIME_PRM1);
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (IGNORE_DDL = FALSE) THEN
> RAISE;
> END IF;
> END;
>
>
>
>
>
> PROCEDURE EXECUTE_STMTCUSR(
> STMT IN VARCHAR2,
> CURRENT_USER IN VARCHAR2 DEFAULT NULL,
> IGNORE_DDL_DML_ERROR IN BOOLEAN DEFAULT FALSE,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE)
> IS
> DUMMY VARCHAR2(32767);
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW1 RAW(32737);
> OUT_RAW2 RAW(32737);
> OUT_BINT1 BINARY_INTEGER;
> OUT_BINT2 BINARY_INTEGER;
> OUT_INT1 PLS_INTEGER;
> OUT_INT2 PLS_INTEGER;
> TM1 TIMESTAMP WITH TIME ZONE;
> TM2 TIMESTAMP WITH TIME ZONE;
> STREAMS_CAPTURE_OFF BOOLEAN;
> BEGIN
> DUMMY := DBMS_ASSERT.SCHEMA_NAME(CURRENT_USER);
> STREAMS_CAPTURE_OFF := DBMS_AQADM_SYSCALLS.KWQA_3GL_ISSTREAMSCAPTUREOFF;
>
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(TRUE);
> END IF;
>
> DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmtCusr: '|| STMT,
> EVENT_LEVEL => DBMS_AQADM_SYS.TRACE_FLAG_AQ_DEBUG);
>
> AQ_INTERNAL_EXESTMT(SQL_STMT => STMT, OPCODE => 256, BYPASS_DV => BYPASS_DV,
> IN_STR_ARRAY => STR_ARRAY_TYPE(CURRENT_USER), OUT_STR_ARRAY => OUT_STR_ARR,
> OUT_NUM_ARRAY => OUT_NUM_ARR, OUT_RAW_PARAM1 => OUT_RAW1,
> OUT_RAW_PARAM2 => OUT_RAW2, OUT_BINT_PARAM1 => OUT_BINT1,
> OUT_BINT_PARAM2 => OUT_BINT2, OUT_INT_PARAM1 => OUT_INT1,
> OUT_INT_PARAM2 => OUT_INT2, OUT_TIME_PARAM1 => TM1,
> OUT_TIME_PARAM2 => TM2);
>
>
>
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF (IGNORE_DDL_DML_ERROR = FALSE) THEN
> RAISE;
> ELSE
> DBMS_SYSTEM.KSDWRT(1, 'Encountered error when executing : '|| STMT);
> END IF;
> WHEN NO_DATA_FOUND THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF (IGNORE_DDL_DML_ERROR = FALSE) THEN
> RAISE;
> ELSE
> DBMS_SYSTEM.KSDWRT(1, 'Encountered error when executing : '|| STMT);
> END IF;
> WHEN OBJECT_ALREADY_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> DBMS_SYSTEM.KSDWRT(1, 'Encountered error when executing : '|| STMT);
> IF (IGNORE_DDL_DML_ERROR = FALSE) THEN
> RAISE;
> END IF;
> WHEN OTHERS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> RAISE;
> END;
>
143c367
< DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmt2: '|| STMT);
---
> DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmt3: '|| STMT);
148c372
< KWQA_3GL_EXECUTESTMT(STMT, TRUE);
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
195c419
< WHEN COMPILE_ERROR THEN
---
> WHEN COMPILE_ERROR THEN
605c829
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE' ||
624c848
< ' WITH READ ONLY', FALSE, TRUE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
767c991
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
785c1009
< ' WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
917c1141
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
936c1160
< ' WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
1609c1833
< DBMS_AQADM_INV.EXECUTE_STMT2(VIEW_TXT || BV_TXT || ' WITH READ ONLY');
---
> EXECUTE_STMT3(VIEW_TXT || BV_TXT || ' WITH READ ONLY');
1835c2059
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
1851c2075
< ' WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
2074,2076c2298,2300
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE '
< || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)
< || '.' || DBMS_ASSERT.ENQUOTE_NAME(DQT||IOT_NAME||DQT)
---
> EXECUTE_STMT3('CREATE TABLE '
> || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)
> || '.' || DBMS_ASSERT.ENQUOTE_NAME(DQT||IOT_NAME||DQT)
2143c2367
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2146c2370
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2202c2426
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE '
---
> EXECUTE_STMT3('CREATE TABLE '
2231c2455
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE UNIQUE INDEX '
---
> EXECUTE_STMT3('CREATE UNIQUE INDEX '
2263c2487
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2266c2490
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2351c2575
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE '
---
> EXECUTE_STMT3('CREATE TABLE '
2457c2681
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE '
---
> EXECUTE_STMT3('CREATE TABLE '
2558c2782
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)
---
> EXECUTE_STMT3('CREATE TABLE ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)
2623c2847
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2626c2850
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2650c2874
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2653c2877
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2675c2899
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2678c2902
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2743c2967
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)
---
> EXECUTE_STMT3('CREATE TABLE ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT)
2809c3033
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2812c3036
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2834c3058
< EXECUTE IMMEDIATE MOVESQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(MOVESQL);
2842c3066
< EXECUTE IMMEDIATE MOVESQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(MOVESQL);
2859c3083
< EXECUTE IMMEDIATE MOVESQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(MOVESQL);
2867c3091
< EXECUTE IMMEDIATE MOVESQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(MOVESQL);
2895a3120,3121
> DELTAB_CUR SYS_REFCURSOR;
> DELTAB_BNDS AQ$_BND_ARRAY;
2896a3123
> HISSCAN_BNDS AQ$_BND_ARRAY;
2897a3125,3126
> UPDATECT_CUR SYS_REFCURSOR;
> UPDATECT_BNDS AQ$_BND_ARRAY;
2898a3128,3129
> DELCT_CUR SYS_REFCURSOR;
> DELCT_BNDS AQ$_BND_ARRAY;
2904,2905c3135
< TYPE RT IS REF CURSOR;
< SQLRC RT;
---
> SQLRC SYS_REFCURSOR;
2915a3146,3156
>
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW1 RAW(32737);
> OUT_RAW2 RAW(32737);
> OUT_BINT1 BINARY_INTEGER;
> OUT_BINT2 BINARY_INTEGER;
> OUT_INT1 PLS_INTEGER;
> OUT_INT2 PLS_INTEGER;
> TM1 TIMESTAMP WITH TIME ZONE;
> TM2 TIMESTAMP WITH TIME ZONE;
2924,2925c3165,3166
<
< EXECUTE IMMEDIATE DELETEIOT USING Q_NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DELETEIOT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME));
2932c3173,3174
< EXECUTE IMMEDIATE DELETETAB USING Q_NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DELETETAB,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME));
2969c3211,3213
< EXECUTE IMMEDIATE DELETEIOT USING Q_NAME, QUEUENO;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DELETEIOT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(QUEUENO));
3003c3247,3248
< OPEN SQLRC FOR HISSCAN_SQL USING Q_NAME;
---
> HISSCAN_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME));
> SQLRC := KWQAEXGCUR(HISSCAN_SQL, HISSCAN_BNDS);
3008c3253,3260
< EXECUTE IMMEDIATE DELETEIOT USING MSGID;
---
> AQ_INTERNAL_EXESTMT(SQL_STMT => DELETEIOT, OPCODE => 2,
> OUT_STR_ARRAY => OUT_STR_ARR, OUT_NUM_ARRAY => OUT_NUM_ARR,
> IN_RAW_PARAM1 => MSGID, OUT_RAW_PARAM1 => OUT_RAW1,
> OUT_RAW_PARAM2 => OUT_RAW2, OUT_BINT_PARAM1 => OUT_BINT1,
> OUT_BINT_PARAM2 => OUT_BINT2, OUT_INT_PARAM1 => OUT_INT1,
> OUT_INT_PARAM2 => OUT_INT2, OUT_TIME_PARAM1 => TM1,
> OUT_TIME_PARAM2 => TM2);
>
3010c3262,3268
< EXECUTE IMMEDIATE DELETETAB USING MSGID, OUT ENQ_TID, OUT CSCN;
---
> DELTAB_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(STR_VAL => NULL, BMODE => 1),
> AQ$_BND(NUM_VAL => NULL, BMODE => 1));
> DELTAB_CUR := KWQAEXGCUR(DELETETAB, DELTAB_BNDS);
> ENQ_TID := DELTAB_BNDS(2).STR_VAL;
> CSCN := DELTAB_BNDS(3).NUM_VAL;
> CLOSE DELTAB_CUR;
3014c3272,3278
< EXECUTE IMMEDIATE UPDATECTIOT USING ENQ_TID, OUT ROW_ID, OUT MSG_CNT;
---
> UPDATECT_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => ENQ_TID),
> AQ$_BND(UROWID_VAL => NULL, BMODE => 1),
> AQ$_BND(NUM_VAL => NULL, BMODE => 1));
> UPDATECT_CUR := KWQAEXGCUR(UPDATECTIOT, UPDATECT_BNDS);
> ROW_ID := UPDATECT_BNDS(2).STR_VAL;
> MSG_CNT := UPDATECT_BNDS(3).NUM_VAL;
> CLOSE UPDATECT_CUR;
3016c3280,3282
< EXECUTE IMMEDIATE DELETECTIOT USING ROW_ID;
---
> DELCT_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => ROW_ID));
> DELCT_CUR := KWQAEXGCUR(DELETECTIOT, DELCT_BNDS);
> CLOSE DELCT_CUR;
3019a3286
> CLOSE SQLRC;
3032a3300,3301
> IOT_QRY_BNDS AQ$_BND_ARRAY;
> IOT_QRY_CUR SYS_REFCURSOR;
3033a3303,3304
> IOT_UPD_BNDS AQ$_BND_ARRAY;
> IOT_UPD_CUR SYS_REFCURSOR;
3035,3037c3306,3307
< IOT_QUERY_CURSOR INTEGER;
< IOT_UPDATE_CURSOR INTEGER;
< QTABLE_QUERY_CURSOR INTEGER;
---
> QTABLE_QRY_BNDS AQ$_BND_ARRAY;
> QTABLE_QRY_CUR SYS_REFCURSOR;
3050d3319
< IOT_QUERY_CURSOR := DBMS_SQL.OPEN_CURSOR;
3056,3063d3324
< DBMS_SQL.PARSE(IOT_QUERY_CURSOR, IOT_QUERY, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(IOT_QUERY_CURSOR, 1, MSG_QNAME, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(IOT_QUERY_CURSOR, 2, APPNAME, M_SUB_PRXY_LEN);
< DBMS_SQL.DEFINE_COLUMN(IOT_QUERY_CURSOR, 3, MSG_PRIORITY);
< DBMS_SQL.DEFINE_COLUMN(IOT_QUERY_CURSOR, 4, MSG_ENQ_TIME);
< DBMS_SQL.DEFINE_COLUMN(IOT_QUERY_CURSOR, 5, MSG_ENQ_TID, M_TID_LEN);
< DBMS_SQL.DEFINE_COLUMN(IOT_QUERY_CURSOR, 6, MSG_STEP_NO);
< IGNORE := DBMS_SQL.EXECUTE(IOT_QUERY_CURSOR);
3065,3066d3325
<
< QTABLE_QUERY_CURSOR := DBMS_SQL.OPEN_CURSOR;
3070,3075c3329,3331
< || ' WHERE enq_tid = :enq_tid'
< || ' AND step_no = :step_no';
<
< DBMS_SQL.PARSE(QTABLE_QUERY_CURSOR, QTABLE_QUERY, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN_ROWID(QTABLE_QUERY_CURSOR, 1, NEW_ROWID);
<
---
> || ' WHERE enq_tid = :1'
> || ' AND step_no = :2';
>
3077d3332
< IOT_UPDATE_CURSOR := DBMS_SQL.OPEN_CURSOR;
3081,3088c3336,3340
< ' set msg_rowid = :new_rowid ' ||
< ' WHERE msg_qname = :msg_qname AND appname = :appname ' ||
< ' AND msg_priority = :msg_priority AND ' ||
< ' msg_enq_time = :msg_enq_time AND ' ||
< ' msg_enq_tid = :enq_tid AND msg_step_no = :step_no';
<
< DBMS_SQL.PARSE(IOT_UPDATE_CURSOR, IOT_UPDATE, DBMS_SQL.V7);
<
---
> ' set msg_rowid = :1 ' ||
> ' WHERE msg_qname = :2 AND appname = :3 ' ||
> ' AND msg_priority = :4 AND ' ||
> ' msg_enq_time = :5 AND ' ||
> ' msg_enq_tid = :6 AND msg_step_no = :7';
3089a3342,3343
> IOT_QRY_BNDS := AQ$_BND_ARRAY();
> IOT_QRY_CUR := KWQAEXGCUR(IOT_QUERY, IOT_QRY_BNDS);
3091,3101c3345,3362
< IF DBMS_SQL.FETCH_ROWS(IOT_QUERY_CURSOR) > 0 THEN
< DBMS_SQL.COLUMN_VALUE(IOT_QUERY_CURSOR, 1, MSG_QNAME);
< DBMS_SQL.COLUMN_VALUE(IOT_QUERY_CURSOR, 2, APPNAME);
< DBMS_SQL.COLUMN_VALUE(IOT_QUERY_CURSOR, 3, MSG_PRIORITY);
< DBMS_SQL.COLUMN_VALUE(IOT_QUERY_CURSOR, 4, MSG_ENQ_TIME);
< DBMS_SQL.COLUMN_VALUE(IOT_QUERY_CURSOR, 5, MSG_ENQ_TID);
< DBMS_SQL.COLUMN_VALUE(IOT_QUERY_CURSOR, 6, MSG_STEP_NO);
<
<
<
<
---
> FETCH IOT_QRY_CUR INTO MSG_QNAME, APPNAME, MSG_PRIORITY, MSG_ENQ_TIME,
> MSG_ENQ_TID, MSG_STEP_NO;
> EXIT WHEN IOT_QRY_CUR%NOTFOUND;
>
>
> QTABLE_QRY_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => MSG_ENQ_TID),
> AQ$_BND(NUM_VAL => MSG_STEP_NO));
>
> QTABLE_QRY_CUR := KWQAEXGCUR(QTABLE_QUERY, QTABLE_QRY_BNDS);
> FETCH QTABLE_QRY_CUR INTO NEW_ROWID;
> IF (QTABLE_QRY_CUR%FOUND) THEN
> IOT_UPD_BNDS := AQ$_BND_ARRAY(AQ$_BND(UROWID_VAL => NEW_ROWID),
> AQ$_BND(STR_VAL => MSG_QNAME),
> AQ$_BND(STR_VAL => APPNAME),
> AQ$_BND(NUM_VAL => MSG_PRIORITY),
> AQ$_BND(TM_VAL => MSG_ENQ_TIME),
> AQ$_BND(STR_VAL => MSG_ENQ_TID),
> AQ$_BND(NUM_VAL => MSG_STEP_NO));
3103,3125c3364,3371
< DBMS_SQL.BIND_VARIABLE(QTABLE_QUERY_CURSOR, 'enq_tid', MSG_ENQ_TID);
< DBMS_SQL.BIND_VARIABLE(QTABLE_QUERY_CURSOR, 'step_no', MSG_STEP_NO);
<
< IGNORE := DBMS_SQL.EXECUTE(QTABLE_QUERY_CURSOR);
< IF DBMS_SQL.FETCH_ROWS(QTABLE_QUERY_CURSOR) > 0 THEN
< DBMS_SQL.COLUMN_VALUE(QTABLE_QUERY_CURSOR, 1, NEW_ROWID);
<
<
<
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'new_rowid', NEW_ROWID);
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'enq_tid', MSG_ENQ_TID);
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'step_no', MSG_STEP_NO);
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'msg_qname', MSG_QNAME);
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'appname', APPNAME);
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'msg_priority',
< MSG_PRIORITY);
< DBMS_SQL.BIND_VARIABLE(IOT_UPDATE_CURSOR, 'msg_enq_time',
< MSG_ENQ_TIME);
< IGNORE := DBMS_SQL.EXECUTE(IOT_UPDATE_CURSOR);
<
< ELSE
<
< DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(-24020,'aq_patch_iot ' ||
---
> IOT_UPD_CUR := KWQAEXGCUR(IOT_UPDATE, IOT_UPD_BNDS);
> CLOSE IOT_UPD_CUR;
> CLOSE QTABLE_QRY_CUR;
>
> ELSE
> CLOSE QTABLE_QRY_CUR;
>
> DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(-24020,'aq_patch_iot ' ||
3128,3131c3374
< END IF;
< ELSE
< EXIT;
< END IF;
---
> END IF;
3141c3384
<
---
> CLOSE IOT_QRY_CUR;
3144,3145c3387,3388
< IF (DBMS_SQL.IS_OPEN(IOT_QUERY_CURSOR)) THEN
< DBMS_SQL.CLOSE_CURSOR(IOT_QUERY_CURSOR);
---
> IF (IOT_QRY_CUR%ISOPEN) THEN
> CLOSE IOT_QRY_CUR;
3147,3148c3390,3391
< IF (DBMS_SQL.IS_OPEN(IOT_UPDATE_CURSOR)) THEN
< DBMS_SQL.CLOSE_CURSOR(IOT_UPDATE_CURSOR);
---
> IF (IOT_UPD_CUR%ISOPEN) THEN
> CLOSE IOT_UPD_CUR;
3150,3151c3393,3394
< IF (DBMS_SQL.IS_OPEN(QTABLE_QUERY_CURSOR)) THEN
< DBMS_SQL.CLOSE_CURSOR(QTABLE_QUERY_CURSOR);
---
> IF (QTABLE_QRY_CUR%ISOPEN) THEN
> CLOSE QTABLE_QRY_CUR;
3474a3718,3719
> HIGH_SCN_BNDS AQ$_BND_ARRAY;
> HIGH_SCN_CUR SYS_REFCURSOR;
3505c3750,3754
< EXECUTE IMMEDIATE HIGH_SCN_SQL INTO HIGH_SCN;
---
>
> HIGH_SCN_BNDS := AQ$_BND_ARRAY();
> HIGH_SCN_CUR := KWQAEXGCUR(HIGH_SCN_SQL, HIGH_SCN_BNDS);
> FETCH HIGH_SCN_CUR INTO HIGH_SCN;
> CLOSE HIGH_SCN_CUR;
3647a3897,3898
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
3655a3907,3908
> BNDS := AQ$_BND_ARRAY();
>
3662c3915,3917
< EXECUTE IMMEDIATE SQLTEXT INTO IGNORE;
---
> CUR := KWQAEXGCUR(SQLTEXT, BNDS);
> FETCH CUR INTO IGNORE;
> CLOSE CUR;
3681,3682c3936,3944
< EXECUTE IMMEDIATE SQLTEXT INTO IGNORE;
< RETURN 3;
---
> CUR := KWQAEXGCUR(SQLTEXT, BNDS);
> FETCH CUR INTO IGNORE;
> IF (CUR%FOUND) THEN
> CLOSE CUR;
> RETURN 3;
> ELSE
> CLOSE CUR;
> RETURN 2;
> END IF;
3715a3978,3979
> SQL_QRY_BNDS AQ$_BND_ARRAY;
> SQLRC SYS_REFCURSOR;
3716a3981,3982
> SQL_INS_BNDS AQ$_BND_ARRAY;
> SQL_INS_CUR SYS_REFCURSOR;
3726,3727d3991
< TYPE RT IS REF CURSOR;
< SQLRC RT;
3818c4082,4083
< OPEN SQLRC FOR SQLQUERY;
---
> SQL_QRY_BNDS := AQ$_BND_ARRAY();
> SQLRC := KWQAEXGCUR(SQLQUERY, SQL_QRY_BNDS);
3865,3867c4130,4136
< EXECUTE IMMEDIATE SQLINSERT
< USING CONSUMERNO, CONSUMER, QUEUENO, ENQTID, STEPNO, PRIORITY,
< CHAINNO, LOCALNO, MSGID;
---
> SQL_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => CONSUMERNO),
> AQ$_BND(STR_VAL => CONSUMER), AQ$_BND(NUM_VAL => QUEUENO),
> AQ$_BND(STR_VAL => ENQTID), AQ$_BND(NUM_VAL => STEPNO),
> AQ$_BND(NUM_VAL => PRIORITY), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO), AQ$_BND(RAW_VAL => MSGID));
> SQL_INS_CUR := KWQAEXGCUR(SQLINSERT, SQL_INS_BNDS);
> CLOSE SQL_INS_CUR;
3870,3872c4139,4144
< EXECUTE IMMEDIATE SQLINSERT
< USING CONSUMERNO, CONSUMER, QUEUENO, PRIORITY,
< CHAINNO, LOCALNO, MSGID;
---
> SQL_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => CONSUMERNO),
> AQ$_BND(STR_VAL => CONSUMER), AQ$_BND(NUM_VAL => QUEUENO),
> AQ$_BND(NUM_VAL => PRIORITY), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO), AQ$_BND(RAW_VAL => MSGID));
> SQL_INS_CUR := KWQAEXGCUR(SQLINSERT, SQL_INS_BNDS);
> CLOSE SQL_INS_CUR;
3877,3879c4149,4156
< EXECUTE IMMEDIATE SQLINSERT
< USING CONSUMERNO, CONSUMER, QUEUENO, ENQTID, STEPNO, ENQTIME, STEPNO,
< CHAINNO, LOCALNO, MSGID;
---
> SQL_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => CONSUMERNO),
> AQ$_BND(STR_VAL => CONSUMER), AQ$_BND(NUM_VAL => QUEUENO),
> AQ$_BND(STR_VAL => ENQTID), AQ$_BND(NUM_VAL => STEPNO),
> AQ$_BND(TM_VAL => ENQTIME), AQ$_BND(NUM_VAL => STEPNO),
> AQ$_BND(NUM_VAL => CHAINNO), AQ$_BND(NUM_VAL => LOCALNO),
> AQ$_BND(RAW_VAL => MSGID));
> SQL_INS_CUR := KWQAEXGCUR(SQLINSERT, SQL_INS_BNDS);
> CLOSE SQL_INS_CUR;
3882,3884c4159,4165
< EXECUTE IMMEDIATE SQLINSERT
< USING CONSUMERNO, CONSUMER, QUEUENO, ENQTIME, STEPNO,
< CHAINNO, LOCALNO, MSGID;
---
> SQL_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => CONSUMERNO),
> AQ$_BND(STR_VAL => CONSUMER), AQ$_BND(NUM_VAL => QUEUENO),
> AQ$_BND(TM_VAL => ENQTIME), AQ$_BND(NUM_VAL => STEPNO),
> AQ$_BND(NUM_VAL => CHAINNO), AQ$_BND(NUM_VAL => LOCALNO),
> AQ$_BND(RAW_VAL => MSGID));
> SQL_INS_CUR := KWQAEXGCUR(SQLINSERT, SQL_INS_BNDS);
> CLOSE SQL_INS_CUR;
3889,3891c4170,4177
< EXECUTE IMMEDIATE SQLINSERT
< USING CONSUMERNO, CONSUMER, QUEUENO, ENQTID, STEPNO, PRIORITY,
< ENQTIME, STEPNO, CHAINNO, LOCALNO, MSGID;
---
> SQL_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => CONSUMERNO),
> AQ$_BND(STR_VAL => CONSUMER), AQ$_BND(NUM_VAL => QUEUENO),
> AQ$_BND(STR_VAL => ENQTID), AQ$_BND(NUM_VAL => STEPNO),
> AQ$_BND(NUM_VAL => PRIORITY), AQ$_BND(TM_VAL => ENQTIME),
> AQ$_BND(NUM_VAL => STEPNO), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO), AQ$_BND(RAW_VAL => MSGID));
> SQL_INS_CUR := KWQAEXGCUR(SQLINSERT, SQL_INS_BNDS);
> CLOSE SQL_INS_CUR;
3894,3896c4180,4186
< EXECUTE IMMEDIATE SQLINSERT
< USING CONSUMERNO, CONSUMER, QUEUENO, PRIORITY, ENQTIME, STEPNO,
< CHAINNO, LOCALNO, MSGID;
---
> SQL_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => CONSUMERNO),
> AQ$_BND(STR_VAL => CONSUMER), AQ$_BND(NUM_VAL => QUEUENO),
> AQ$_BND(NUM_VAL => PRIORITY), AQ$_BND(TM_VAL => ENQTIME),
> AQ$_BND(NUM_VAL => STEPNO), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO), AQ$_BND(RAW_VAL => MSGID));
> SQL_INS_CUR := KWQAEXGCUR(SQLINSERT, SQL_INS_BNDS);
> CLOSE SQL_INS_CUR;
3899a4190
> CLOSE SQLRC;
3948a4240,4241
> QT_QRY_BNDS AQ$_BND_ARRAY;
> QT_QRY_CUR SYS_REFCURSOR;
3949a4243,4244
> TM_INS_BNDS AQ$_BND_ARRAY;
> TM_INS_CUR SYS_REFCURSOR;
3950a4246,4247
> HIS_INS_BNDS AQ$_BND_ARRAY;
> HIS_INS_CUR SYS_REFCURSOR;
3994a4292,4293
> SESSION_USER VARCHAR(128);
>
4033,4034c4332,4333
< DBMS_AQADM_INV.EXECUTE_STMT2(' drop index ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||SCHEMA||DQT) ||
< '.' ||
---
> EXECUTE_STMT3(' drop index ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||SCHEMA||DQT) ||
> '.' ||
4065c4364,4365
< OPEN SQLRC FOR QT_QUERY;
---
> QT_QRY_BNDS := AQ$_BND_ARRAY();
> QT_QRY_CUR := KWQAEXGCUR(QT_QUERY, QT_QRY_BNDS);
4067,4068c4367,4368
< FETCH SQLRC INTO Q_NAME, MSGID, RID, TIMEMGR_INFO, STATE, HISTORY;
< EXIT WHEN SQLRC%NOTFOUND;
---
> FETCH QT_QRY_CUR INTO Q_NAME, MSGID, RID, TIMEMGR_INFO, STATE, HISTORY;
> EXIT WHEN QT_QRY_CUR%NOTFOUND;
4081,4082c4381,4385
< EXECUTE IMMEDIATE TM_INSERT
< USING TIMEMGR_INFO, TXN_ID, MSGID, ACTION;
---
> TM_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => TIMEMGR_INFO),
> AQ$_BND(STR_VAL => TXN_ID), AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => ACTION));
> TM_INS_CUR := KWQAEXGCUR(TM_INSERT, TM_INS_BNDS);
> CLOSE TM_INS_CUR;
4099,4101c4402,4408
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, AGENTNO, CONSUMER, 0, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER, DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(STR_VAL => CONSUMER),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID), AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4131,4134c4438,4445
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, AGENTNO, '0', 0, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER,
< DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(STR_VAL => '0'),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID),
> AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4138,4141c4449,4456
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, 0, AGENTS_TAB(J), AGENTNO, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER,
< DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(STR_VAL => AGENTS_TAB(J)),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID),
> AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4159,4162c4474,4481
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, AGENTNO, '0', 0, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER,
< DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(STR_VAL => '0'),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID),
> AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4166,4169c4485,4492
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, 0, '0', AGENTNO, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER,
< DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(STR_VAL => '0'),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID),
> AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4192,4195c4515,4522
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, AGENTNO, '0', 0, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER,
< DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(STR_VAL => '0'),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID),
> AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4202,4205c4529,4536
< EXECUTE IMMEDIATE HIS_INSERT
< USING MSGID, 0, AGENTS, AGENTNO, DEQHIS.DEQ_TIME,
< DEQHIS.TRANSACTION_ID, DEQHIS.DEQ_USER,
< DEQHIS.PROPAGATED_MSGID;
---
> HIS_INS_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID),
> AQ$_BND(NUM_VAL => 0), AQ$_BND(STR_VAL => AGENTS),
> AQ$_BND(NUM_VAL => AGENTNO), AQ$_BND(TM_VAL => DEQHIS.DEQ_TIME),
> AQ$_BND(STR_VAL => DEQHIS.TRANSACTION_ID),
> AQ$_BND(NUM_VAL => DEQHIS.DEQ_USER),
> AQ$_BND(RAW_VAL => DEQHIS.PROPAGATED_MSGID));
> HIS_INS_CUR := KWQAEXGCUR(HIS_INSERT, HIS_INS_BNDS);
> CLOSE HIS_INS_CUR;
4209a4541
> CLOSE QT_QRY_CUR;
4221c4553
< STMT_CURSOR := DBMS_SQL.OPEN_CURSOR;
---
>
4223c4555,4557
< DBMS_SYS_SQL.PARSE_AS_USER(STMT_CURSOR, 'RENAME ' ||
---
> SELECT USERNAME INTO SESSION_USER FROM ALL_USERS WHERE USER_ID = SESSION_USERID ;
>
> EXECUTE_STMTCUSR('RENAME ' ||
4225,4228c4559
< DBMS_ASSERT.ENQUOTE_NAME(DQT|| 'AQ$_' ||QT_NAME|| '_I' ||DQT),
< DBMS_SQL.V7, SESSION_USERID);
< IGNORE := DBMS_SQL.EXECUTE(STMT_CURSOR);
< DBMS_SQL.CLOSE_CURSOR(STMT_CURSOR);
---
> DBMS_ASSERT.ENQUOTE_NAME(DQT|| 'AQ$_' ||QT_NAME|| '_I' ||DQT), SESSION_USER);
4231c4562
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4239c4570
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4243c4574
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4249c4580
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4253c4584
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4257c4588
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4261c4592
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4312a4644,4645
> TM_QRY_BNDS AQ$_BND_ARRAY;
> TM_QRY_CUR SYS_REFCURSOR;
4313a4647,4648
> UPDHIS_BNDS AQ$_BND_ARRAY;
> UPDHIS_CUR SYS_REFCURSOR;
4314a4650,4651
> UPDSTATE_BNDS AQ$_BND_ARRAY;
> UPDSTATE_CUR SYS_REFCURSOR;
4326a4664,4665
>
>
4337c4676,4682
< EXECUTE IMMEDIATE TM_QUERY INTO TMINFO USING MSGID;
---
> TM_QRY_BNDS := AQ$_BND_ARRAY(AQ$_BND(RAW_VAL => MSGID));
> TM_QRY_CUR := KWQAEXGCUR(TM_QUERY, TM_QRY_BNDS);
> FETCH TM_QRY_CUR INTO TMINFO;
> IF (TM_QRY_CUR%NOTFOUND) THEN
> TMINFO := NULL;
> END IF;
> CLOSE TM_QRY_CUR;
4352c4697,4700
< EXECUTE IMMEDIATE QTUPDSTATE USING TMINFO, RID;
---
> UPDSTATE_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => TMINFO),
> AQ$_BND(UROWID_VAL => RID));
> UPDSTATE_CUR := KWQAEXGCUR(QTUPDSTATE, UPDSTATE_BNDS);
> CLOSE UPDSTATE_CUR;
4447a4796,4797
> HIS_QRY_BNDS AQ$_BND_ARRAY;
> HIS_QRY_CUR SYS_REFCURSOR;
4476,4477d4825
< TYPE RT IS REF CURSOR;
< HIS_RC RT;
4484a4833,4834
> DEQINS_BNDS AQ$_BND_ARRAY;
> DEQINS_CUR SYS_REFCURSOR;
4485a4836,4837
> DEQUPD_BNDS AQ$_BND_ARRAY;
> DEQUPD_CUR SYS_REFCURSOR;
4508a4861
> SESSION_USER VARCHAR2(128);
4581c4934,4935
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
>
4588c4942,4943
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
>
4593c4948
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4597c4952
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4636c4991,4993
< OPEN HIS_RC FOR HIS_QUERY;
---
>
> HIS_QRY_BNDS := AQ$_BND_ARRAY();
> HIS_QRY_CUR := KWQAEXGCUR(HIS_QUERY, HIS_QRY_BNDS);
4638,4641c4995,4998
< FETCH HIS_RC INTO MSGID, ADDRESS, PROTOCOL, CONSUMER_NAME, DEQ_TIME,
< DEQ_TXN_ID, DEQ_USER, PMID, QNAME, RID, STATE,
< PRIORITY, ENQTIME, ENQTID, STEPNO, CHAINNO, LOCALNO;
< EXIT WHEN HIS_RC%NOTFOUND;
---
> FETCH HIS_QRY_CUR INTO MSGID, ADDRESS, PROTOCOL, CONSUMER_NAME, DEQ_TIME,
> DEQ_TXN_ID, DEQ_USER, PMID, QNAME, RID, STATE,
> PRIORITY, ENQTIME, ENQTID, STEPNO, CHAINNO, LOCALNO;
> EXIT WHEN HIS_QRY_CUR%NOTFOUND;
4677,4679c5034,5042
< EXECUTE IMMEDIATE DEQINSERT
< USING QNAME, CONSUMER_NAME, PRIORITY, ENQTIME, ENQTID, STEPNO,
< CHAINNO, LOCALNO, RID, REMOTE_APPS;
---
>
> DEQINS_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QNAME),
> AQ$_BND(STR_VAL => CONSUMER_NAME), AQ$_BND(NUM_VAL => PRIORITY),
> AQ$_BND(TM_VAL => ENQTIME), AQ$_BND(STR_VAL => ENQTID),
> AQ$_BND(NUM_VAL => STEPNO), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO),AQ$_BND(UROWID_VAL => RID),
> AQ$_BND(STR_VAL => REMOTE_APPS));
> DEQINS_CUR := KWQAEXGCUR(DEQINSERT, DEQINS_BNDS);
> CLOSE DEQINS_CUR;
4695,4697c5058,5066
< EXECUTE IMMEDIATE DEQINSERT
< USING QNAME, PROXY, PRIORITY, ENQTIME, ENQTID, STEPNO, CHAINNO,
< LOCALNO, RID, REMOTE_APPS;
---
>
> DEQINS_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QNAME),
> AQ$_BND(STR_VAL => PROXY), AQ$_BND(NUM_VAL => PRIORITY),
> AQ$_BND(TM_VAL => ENQTIME), AQ$_BND(STR_VAL => ENQTID),
> AQ$_BND(NUM_VAL => STEPNO), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO),AQ$_BND(UROWID_VAL => RID),
> AQ$_BND(STR_VAL => REMOTE_APPS));
> DEQINS_CUR := KWQAEXGCUR(DEQINSERT, DEQINS_BNDS);
> CLOSE DEQINS_CUR;
4705,4706c5074,5080
< EXECUTE IMMEDIATE DEQUPDATE
< USING HISTORY(BUCKETNO).REMOTE_APPS, QNAME, PROXY, RID;
---
>
> DEQUPD_BNDS := AQ$_BND_ARRAY(
> AQ$_BND(STR_VAL => HISTORY(BUCKETNO).REMOTE_APPS),
> AQ$_BND(STR_VAL => QNAME), AQ$_BND(STR_VAL => PROXY),
> AQ$_BND(UROWID_VAL => RID));
> DEQUPD_CUR := KWQAEXGCUR(DEQUPDATE, DEQUPD_BNDS);
> CLOSE DEQUPD_CUR;
4712,4713c5086,5091
< EXECUTE IMMEDIATE DEQUPDATE
< USING DEQHIS.REMOTE_APPS, QNAME, DEQHIS.CONSUMER, RID;
---
>
> DEQUPD_BNDS := AQ$_BND_ARRAY(
> AQ$_BND(STR_VAL => DEQHIS.REMOTE_APPS), AQ$_BND(STR_VAL => QNAME),
> AQ$_BND(STR_VAL => DEQHIS.CONSUMER), AQ$_BND(UROWID_VAL => RID));
> DEQUPD_CUR := KWQAEXGCUR(DEQUPDATE, DEQUPD_BNDS);
> CLOSE DEQUPD_CUR;
4740,4742c5118,5126
< EXECUTE IMMEDIATE DEQINSERT
< USING QNAME, PROXY, PRIORITY, ENQTIME, ENQTID, STEPNO, CHAINNO,
< LOCALNO, RID, REMOTE_APPS;
---
>
> DEQINS_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QNAME),
> AQ$_BND(STR_VAL => PROXY), AQ$_BND(NUM_VAL => PRIORITY),
> AQ$_BND(TM_VAL => ENQTIME), AQ$_BND(STR_VAL => ENQTID),
> AQ$_BND(NUM_VAL => STEPNO), AQ$_BND(NUM_VAL => CHAINNO),
> AQ$_BND(NUM_VAL => LOCALNO),AQ$_BND(UROWID_VAL => RID),
> AQ$_BND(STR_VAL => REMOTE_APPS));
> DEQINS_CUR := KWQAEXGCUR(DEQINSERT, DEQINS_BNDS);
> CLOSE DEQINS_CUR;
4748,4749c5132,5137
< EXECUTE IMMEDIATE DEQUPDATE
< USING RCPT_LIST, QNAME, DEQHIS.CONSUMER, RID;
---
>
> DEQUPD_BNDS := AQ$_BND_ARRAY(
> AQ$_BND(STR_VAL => RCPT_LIST), AQ$_BND(STR_VAL => QNAME),
> AQ$_BND(STR_VAL => DEQHIS.CONSUMER), AQ$_BND(UROWID_VAL => RID));
> DEQUPD_CUR := KWQAEXGCUR(DEQUPDATE, DEQUPD_BNDS);
> CLOSE DEQUPD_CUR;
4766a5155
> CLOSE HIS_QRY_CUR;
4779c5168
< STMT_CURSOR := DBMS_SQL.OPEN_CURSOR;
---
>
4781,4785c5170,5174
< DBMS_SYS_SQL.PARSE_AS_USER(STMT_CURSOR,
< 'RENAME ' || 'AQ$_' || DBMS_ASSERT.SIMPLE_SQL_NAME(QT_NAME) || '_J TO ' ||
< 'AQ$_' || DBMS_ASSERT.SIMPLE_SQL_NAME(QT_NAME) || '_I', DBMS_SQL.V7, SESSION_USERID);
< IGNORE := DBMS_SQL.EXECUTE(STMT_CURSOR);
< DBMS_SQL.CLOSE_CURSOR(STMT_CURSOR);
---
> SELECT USERNAME INTO SESSION_USER FROM ALL_USERS WHERE USER_ID = SESSION_USERID ;
>
> EXECUTE_STMTCUSR('RENAME ' || 'AQ$_' ||
> DBMS_ASSERT.SIMPLE_SQL_NAME(QT_NAME) || '_J TO ' || 'AQ$_' ||
> DBMS_ASSERT.SIMPLE_SQL_NAME(QT_NAME) || '_I', SESSION_USER);
4796c5185
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4800c5189
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4804c5193
< DBMS_AQADM_INV.EXECUTE_STMT2(' alter table ' ||
---
> EXECUTE_STMT3(' alter table ' ||
4815c5204
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE INDEX ' ||
---
> EXECUTE_STMT3(' CREATE INDEX ' ||
5412c5801
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
5419c5808
< ' WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
5692c6081
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
5699c6088
< ' WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
5856c6245
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
5863c6252
< ' WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ' WITH READ ONLY', FALSE, TRUE);
5987c6376
< DBMS_AQADM_INV.EXECUTE_STMT2(' CREATE OR REPLACE FORCE VIEW ' ||
---
> EXECUTE_STMT3(' CREATE OR REPLACE FORCE VIEW ' ||
5994c6383
< ') WITH READ ONLY', FALSE, FALSE, TRUE);
---
> ') WITH READ ONLY', FALSE, TRUE);
5996,6058d6384
<
< PROCEDURE AQ_INTERNAL_EXESTMT(
< SQL_STMT IN VARCHAR2,
< OPCODE IN NUMBER DEFAULT NULL,
< BYPASS_DV IN BOOLEAN DEFAULT TRUE,
< BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
< IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
< IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
< OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
< OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_RAW_PARAM1 IN RAW DEFAULT NULL,
< IN_RAW_PARAM2 IN RAW DEFAULT NULL,
< IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
< IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
< IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
< IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
< IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< OUT_RAW_PARAM1 OUT RAW,
< OUT_RAW_PARAM2 OUT RAW,
< OUT_BINT_PARAM1 OUT BINARY_INTEGER,
< OUT_BINT_PARAM2 OUT BINARY_INTEGER,
< OUT_INT_PARAM1 OUT PLS_INTEGER,
< OUT_INT_PARAM2 OUT PLS_INTEGER,
< OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
< OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
< IS EXTERNAL
< NAME "aq_internal_exeStmt"
< WITH CONTEXT
< PARAMETERS(CONTEXT,
< SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
< OPCODE OCINUMBER, OPCODE INDICATOR SB2,
< BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
< BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
< IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
< IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
< IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
< IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
< OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
< OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
< OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
< OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
< IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
< IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
< IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
< IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
< IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
< IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
< IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
< IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
< OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
< OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
< OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
< OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
< OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
< OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
< OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
< OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
< LIBRARY DBMS_AQINT_LIB;
24c24
< TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512);
---
> TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
28a29,60
> UNIQUENESS_CONSTRAINT_VIOLATED EXCEPTION;
> PRAGMA EXCEPTION_INIT(UNIQUENESS_CONSTRAINT_VIOLATED, -1);
>
> TABLE_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942);
>
> INDEX_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(INDEX_DOES_NOT_EXIST, -1418);
>
> NAME_IN_USE EXCEPTION;
> PRAGMA EXCEPTION_INIT(NAME_IN_USE, -955);
>
> INVALID_COLUMN EXCEPTION;
> PRAGMA EXCEPTION_INIT(INVALID_COLUMN, -904);
>
> COLUMN_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(COLUMN_EXISTS, -1430);
>
> PRIMARY_KEY_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(PRIMARY_KEY_EXISTS, -2260);
>
> COMPILE_ERROR EXCEPTION;
> PRAGMA EXCEPTION_INIT(COMPILE_ERROR, -24344);
>
> SEQUENCE_DOES_NOT_EXIST EXCEPTION;
> PRAGMA EXCEPTION_INIT(SEQUENCE_DOES_NOT_EXIST, -2289);
>
> OBJECT_ALREADY_EXISTS EXCEPTION;
> PRAGMA EXCEPTION_INIT(OBJECT_ALREADY_EXISTS, -955);
>
>
>
32a65,292
>
>
>
>
> FUNCTION KWQAEXGCUR(STMT IN VARCHAR2,
> BND_ARRAY IN OUT AQ$_BND_ARRAY,
> USER IN VARCHAR2 DEFAULT NULL,
> FLAGS IN PLS_INTEGER DEFAULT NULL,
> OPCODE IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> PRAGMA INTERFACE(C, KWQAEXGCUR);
>
> PROCEDURE AQ_INTERNAL_EXESTMT(
> SQL_STMT IN VARCHAR2,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
> OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
> OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
> IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
> IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
> IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> OUT_RAW_PARAM1 OUT RAW,
> OUT_RAW_PARAM2 OUT RAW,
> OUT_BINT_PARAM1 OUT BINARY_INTEGER,
> OUT_BINT_PARAM2 OUT BINARY_INTEGER,
> OUT_INT_PARAM1 OUT PLS_INTEGER,
> OUT_INT_PARAM2 OUT PLS_INTEGER,
> OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
> OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
> IS EXTERNAL
> NAME "aq_internal_exeStmt"
> WITH CONTEXT
> PARAMETERS(CONTEXT,
> SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
> OPCODE OCINUMBER, OPCODE INDICATOR SB2,
> BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
> BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
> IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
> IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
> IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
> IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
> OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
> OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
> OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
> OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
> IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
> IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
> IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
> IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
> IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
> IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
> IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
> IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
> OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
> OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
> OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
> OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
> OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
> OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
> OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
> OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
> LIBRARY DBMS_AQINT_LIB;
>
>
>
>
> PROCEDURE EXECUTE_STMT_IN_KERNEL_CURSOR(
> SQL_STMT IN VARCHAR2,
> IGNORE_DDL IN BOOLEAN DEFAULT TRUE,
> OPCODE IN NUMBER DEFAULT NULL,
> BYPASS_DV IN BOOLEAN DEFAULT TRUE,
> BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
> IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
> IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
> IN_RAW_PARAM1 IN RAW DEFAULT NULL,
> IN_RAW_PARAM2 IN RAW DEFAULT NULL,
> IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
> IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL) IS
>
> OUT_STR_ARR STR_ARRAY_TYPE;
> OUT_NUM_ARR NUM_ARRAY_TYPE;
> OUT_RAW_PRM1 RAW(32737);
> OUT_RAW_PRM2 RAW(32737);
> OUT_BINT_PRM1 BINARY_INTEGER;
> OUT_BINT_PRM2 BINARY_INTEGER;
> OUT_INT_PRM1 PLS_INTEGER;
> OUT_INT_PRM2 PLS_INTEGER;
> OUT_TIME_PRM1 TIMESTAMP WITH TIME ZONE;
> OUT_TIME_PRM2 TIMESTAMP WITH TIME ZONE;
> BEGIN
> AQ_INTERNAL_EXESTMT(
> SQL_STMT => SQL_STMT,
> OPCODE => OPCODE,
> BYPASS_DV => BYPASS_DV,
> BYPASS_AUDIT => BYPASS_AUDIT,
> IN_STR_ARRAY => IN_STR_ARRAY,
> IN_STRPOS_ARRAY=> IN_STRPOS_ARRAY,
> IN_NUM_ARRAY => IN_NUM_ARRAY,
> IN_NUMPOS_ARRAY=> IN_NUMPOS_ARRAY,
> IN_RAW_PARAM1 => IN_RAW_PARAM1,
> IN_RAW_PARAM2 => IN_RAW_PARAM2,
> IN_TIME_PARAM1 => IN_TIME_PARAM1,
> IN_TIME_PARAM2 => IN_TIME_PARAM2,
> OUT_STR_ARRAY => OUT_STR_ARR,
> OUT_STRPOS_ARRAY=> NULL,
> OUT_NUM_ARRAY => OUT_NUM_ARR,
> OUT_NUMPOS_ARRAY=> NULL,
> IN_BINT_PARAM1 => NULL,
> IN_BINT_PARAM2 => NULL,
> IN_INT_PARAM1 => NULL,
> IN_INT_PARAM2 => NULL,
> OUT_RAW_PARAM1 => OUT_RAW_PRM1,
> OUT_RAW_PARAM2 => OUT_RAW_PRM2,
> OUT_BINT_PARAM1=> OUT_BINT_PRM1,
> OUT_BINT_PARAM2=> OUT_BINT_PRM2,
> OUT_INT_PARAM1 => OUT_INT_PRM1,
> OUT_INT_PARAM2 => OUT_INT_PRM2,
> OUT_TIME_PARAM1=> OUT_TIME_PRM1,
> OUT_TIME_PARAM2=> OUT_TIME_PRM1);
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (IGNORE_DDL = FALSE) THEN
> RAISE;
> END IF;
> END;
>
>
>
>
>
>
>
>
> PROCEDURE EXECUTE_STMT3(STMT IN VARCHAR2,
> IGNORE_DDL_ERROR IN BOOLEAN DEFAULT FALSE,
> IGNORE_COMPERR IN BOOLEAN DEFAULT FALSE) IS
>
> STREAMS_CAPTURE_OFF BOOLEAN;
>
> BEGIN
> DBMS_AQADM_SYS.WRITE_TRACE(MESSAGE => 'execute_stmt3: '|| STMT);
> STREAMS_CAPTURE_OFF := DBMS_AQADM_SYSCALLS.KWQA_3GL_ISSTREAMSCAPTUREOFF;
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(TRUE);
> END IF;
> EXECUTE_STMT_IN_KERNEL_CURSOR(STMT);
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> EXCEPTION
> WHEN TABLE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN INDEX_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN NAME_IN_USE THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN INVALID_COLUMN THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN COLUMN_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN PRIMARY_KEY_EXISTS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN COMPILE_ERROR THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_COMPERR THEN
> RAISE;
> END IF;
> WHEN SEQUENCE_DOES_NOT_EXIST THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> IF NOT IGNORE_DDL_ERROR THEN
> RAISE;
> END IF;
> WHEN OTHERS THEN
> IF (STREAMS_CAPTURE_OFF = FALSE) THEN
> DBMS_AQADM_SYSCALLS.KWQA_3GL_SETSTREAMSCAPTUREOFF(FALSE);
> END IF;
> RAISE;
> END;
>
>
173a434,435
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
182c444,446
< EXECUTE IMMEDIATE SEQQUERY INTO AGENTNO;
---
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(SEQQUERY, BNDS);
> FETCH CUR INTO AGENTNO;
186a451
> CLOSE CUR;
212a478,479
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
250,254c517,519
< BEGIN
< EXECUTE IMMEDIATE SUB_QUERY INTO SUB_NAME
< USING Q_NAME, SUB.ADDRESS, SUB.PROTOCOL;
<
<
---
> BEGIN
> BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUB.ADDRESS), AQ$_BND(NUM_VAL => SUB.PROTOCOL));
256,258c521,528
<
< SUB_NAME_COND := FALSE;
<
---
> CUR := KWQAEXGCUR(SUB_QUERY, BNDS);
> FETCH CUR INTO SUB_NAME;
> IF (CUR%FOUND) THEN
> SUB_NAME_COND := FALSE;
> ELSE
> SUB_NAME_COND := TRUE;
> END IF;
> CLOSE CUR;
260,261d529
< WHEN NO_DATA_FOUND THEN
< SUB_NAME_COND := TRUE;
453a722,723
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
467c737,746
< EXECUTE IMMEDIATE SUB_QUERY INTO TMP;
---
> BNDS := AQ$_BND_ARRAY();
> CUR := KWQAEXGCUR(SUB_QUERY, BNDS);
> FETCH CUR INTO TMP;
> IF (CUR%NOTFOUND) THEN
> CLOSE CUR;
> RETURN FALSE;
> ELSE
> CLOSE CUR;
> RETURN TRUE;
> END IF;
470,471d748
< WHEN NO_DATA_FOUND THEN
< RETURN FALSE;
572c849,850
< SUB_CURSOR INTEGER;
---
> SUB_BNDS AQ$_BND_ARRAY;
> SUB_CURSOR SYS_REFCURSOR;
601,607c879,880
< SUB_CURSOR := DBMS_SQL.OPEN_CURSOR;
< DBMS_SQL.PARSE(SUB_CURSOR, SUB_QUERY, DBMS_SQL.V7);
< DBMS_SQL.BIND_VARIABLE(SUB_CURSOR, ':1', Q_NAME);
< DBMS_SQL.DEFINE_COLUMN(SUB_CURSOR, 1, NAME, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(SUB_CURSOR, 2, ADDRESS, ADDR_LEN);
< DBMS_SQL.DEFINE_COLUMN(SUB_CURSOR, 3, PROTOCOL);
< IGNORE := DBMS_SQL.EXECUTE(SUB_CURSOR);
---
> SUB_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME));
> SUB_CURSOR := KWQAEXGCUR(SUB_QUERY, SUB_BNDS);
611,621c884,889
< IF DBMS_SQL.FETCH_ROWS(SUB_CURSOR) > 0 THEN
< DBMS_SQL.COLUMN_VALUE(SUB_CURSOR, 1, NAME);
< DBMS_SQL.COLUMN_VALUE(SUB_CURSOR, 2, ADDRESS);
< DBMS_SQL.COLUMN_VALUE(SUB_CURSOR, 3, PROTOCOL);
< WRITE_TRACE('queue_subscribers: aq$_agent(' || NAME || ',' || ADDRESS || ', 0)');
< SUB := SYS.AQ$_AGENT(NAME, ADDRESS, PROTOCOL);
< SUBSTAB(K) := SUB;
< K := K + 1;
< ELSE
< EXIT;
< END IF;
---
> FETCH SUB_CURSOR INTO NAME, ADDRESS, PROTOCOL;
> EXIT WHEN SUB_CURSOR%NOTFOUND;
> WRITE_TRACE('queue_subscribers: aq$_agent(' || NAME || ',' || ADDRESS || ', 0)');
> SUB := SYS.AQ$_AGENT(NAME, ADDRESS, PROTOCOL);
> SUBSTAB(K) := SUB;
> K := K + 1;
623,624c891
<
< DBMS_SQL.CLOSE_CURSOR(SUB_CURSOR);
---
> CLOSE SUB_CURSOR;
650,651c917,918
< IF DBMS_SQL.IS_OPEN(SUB_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(SUB_CURSOR);
---
> IF (SUB_CURSOR%ISOPEN) THEN
> CLOSE SUB_CURSOR;
695a963,964
> SUBTAB_BNDS AQ$_BND_ARRAY;
> SUBTAB_CUR SYS_REFCURSOR;
772,778c1041,1052
<
< EXECUTE IMMEDIATE SUBTABQUERY INTO PROXYNO
< USING Q_NAME, PROXY_ADDR, PROXY_PROT;
<
< PEXIST := TRUE;
< RETURN;
<
---
> SUBTAB_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => PROXY_ADDR),
> AQ$_BND(NUM_VAL => PROXY_PROT));
> SUBTAB_CUR := KWQAEXGCUR(SUBTABQUERY, SUBTAB_BNDS);
> FETCH SUBTAB_CUR INTO PROXYNO;
> IF (SUBTAB_CUR%FOUND) THEN
> CLOSE SUBTAB_CUR;
> PEXIST := TRUE;
> RETURN;
> ELSE
> CLOSE SUBTAB_CUR;
> END IF;
780,781d1053
< WHEN NO_DATA_FOUND THEN
< NULL;
787,790c1059,1062
< DBMS_AQADM_INV.EXECUTE_STMT2(' LOCK TABLE ' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||Q_SCHEMA||DQT) || '.' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
< ' IN EXCLUSIVE MODE ');
---
> EXECUTE_STMT3(' LOCK TABLE ' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||Q_SCHEMA||DQT) || '.' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
> ' IN EXCLUSIVE MODE ');
795,799c1067,1078
< EXECUTE IMMEDIATE SUBTABQUERY INTO PROXYNO
< USING Q_NAME, PROXY_ADDR, PROXY_PROT;
<
< PEXIST := TRUE;
< RETURN;
---
> SUBTAB_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => PROXY_ADDR),
> AQ$_BND(NUM_VAL => PROXY_PROT));
> SUBTAB_CUR := KWQAEXGCUR(SUBTABQUERY, SUBTAB_BNDS);
> FETCH SUBTAB_CUR INTO PROXYNO;
> IF (SUBTAB_CUR%FOUND) THEN
> CLOSE SUBTAB_CUR;
> PEXIST := TRUE;
> RETURN;
> ELSE
> CLOSE SUBTAB_CUR;
> END IF;
802,803d1080
< WHEN NO_DATA_FOUND THEN
< NULL;
835,838c1112,1117
<
< EXECUTE IMMEDIATE SUBTABINSERT
< USING PROXYNO, Q_NAME, PROXY_ADDR, PROXY_PROT, PROXY_FLAG;
<
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUBTABINSERT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME, PROXY_ADDR),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2,3),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(PROXYNO, PROXY_PROT, PROXY_FLAG),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 4, 5));
>
940c1219
< DBMS_AQADM_INV.EXECUTE_STMT2(' LOCK TABLE ' ||
---
> EXECUTE_STMT3(' LOCK TABLE ' ||
979,980c1258,1262
< EXECUTE IMMEDIATE ADDRADD
< USING ADDRID, Q_NAME, AGENT_ADDRESS, AGENT_PROTOCOL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(ADDRADD,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME, AGENT_ADDRESS),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2,3),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(ADDRID, AGENT_PROTOCOL),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 4));
1039a1322,1323
> SUB_COUNT_BNDS AQ$_BND_ARRAY;
> SUB_COUNT_CUR SYS_REFCURSOR;
1040a1325,1326
> REMOTE_SUB_BNDS AQ$_BND_ARRAY;
> REMOTE_SUB_CUR SYS_REFCURSOR;
1131c1417,1421
< EXECUTE IMMEDIATE SUB_COUNT_STMT INTO SUB_COUNT USING Q_NAME, 1, 1;
---
> SUB_COUNT_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(NUM_VAL => 1), AQ$_BND(NUM_VAL => 1));
> SUB_COUNT_CUR := KWQAEXGCUR(SUB_COUNT_STMT, SUB_COUNT_BNDS);
> FETCH SUB_COUNT_CUR INTO SUB_COUNT;
> CLOSE SUB_COUNT_CUR;
1144,1147c1434
< ' AND (bitand(subscriber_type, :3) = :4) ' ;
<
< EXECUTE IMMEDIATE REMOTE_SUB_STMT INTO REMOTE_SUB_COUNT
< USING Q_NAME, SUB.ADDRESS, 1, 1;
---
> ' AND (bitand(subscriber_type, :3) = :4) ';
1148a1436,1442
> REMOTE_SUB_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUB.ADDRESS), AQ$_BND(NUM_VAL => 1),
> AQ$_BND(NUM_VAL => 1));
> REMOTE_SUB_CUR := KWQAEXGCUR(REMOTE_SUB_STMT, REMOTE_SUB_BNDS);
> FETCH REMOTE_SUB_CUR INTO REMOTE_SUB_COUNT;
> CLOSE REMOTE_SUB_CUR;
>
1304a1599,1600
> SUBTAB_BNDS AQ$_BND_ARRAY;
> SUBTAB_CUR SYS_REFCURSOR;
1428,1429c1724,1729
< EXECUTE IMMEDIATE DEQIOT_SQL
< USING SUBID, '0', SUB.NAME;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DEQIOT_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE('0', SUB.NAME),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2,3),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1));
>
1436,1437d1735
< EXECUTE IMMEDIATE HIOT_SQL
< USING SUBID, '0', '0', SUB.NAME;
1439,1443c1737,1747
< IF ADDRID = 0 OR (BITAND(SUBSCR_TYPE, 4) != 4) THEN
< ADD_ADDRESS_1(Q_SCHEMA, Q_NAME, SUBTAB_NAME, SUBSCR_TYPE,
< DQT||Q_SCHEMA||DQT || '.' || DQT||Q_NAME||DQT, 0,
< ADDRID);
< END IF;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(HIOT_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE('0', '0', SUB.NAME),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3, 4),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1));
>
> IF ADDRID = 0 OR (BITAND(SUBSCR_TYPE, 4) != 4) THEN
> ADD_ADDRESS_1(Q_SCHEMA, Q_NAME, SUBTAB_NAME, SUBSCR_TYPE,
> DQT||Q_SCHEMA||DQT || '.' || DQT||Q_NAME||DQT, 0,
> ADDRID);
> END IF;
1470a1775,1781
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUBTAB_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE(RULE_NAME, CONCAT_TRANS, CONCAT_RULESET,
> CONCAT_NEG_RULESET),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3, 4, 5),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUB_FLAG, SUBID),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 6));
1472,1474d1782
< EXECUTE IMMEDIATE SUBTAB_SQL
< USING SUB_FLAG, RULE_NAME, CONCAT_TRANS, CONCAT_RULESET,
< CONCAT_NEG_RULESET, SUBID;
1484,1486c1792,1798
< EXECUTE IMMEDIATE SUBTAB_SQL
< USING SUBID, Q_NAME, SUB.NAME, SUB.ADDRESS, SUB.PROTOCOL, SUB_FLAG,
< RULE_NAME, CONCAT_TRANS, CONCAT_RULESET, CONCAT_NEG_RULESET;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUBTAB_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME, SUB.NAME, SUB.ADDRESS,
> RULE_NAME, CONCAT_TRANS, CONCAT_RULESET,
> CONCAT_NEG_RULESET),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3, 4, 7, 8, 9, 10),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID, SUB.PROTOCOL, SUB_FLAG),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 5, 6));
1498c1810,1813
< EXECUTE IMMEDIATE SUBTAB_SQL USING CUR_QT_TIME, ADD_SCN, SUBID ;
---
> SUBTAB_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(STR_VAL => ADD_SCN), AQ$_BND(NUM_VAL => SUBID));
> SUBTAB_CUR := KWQAEXGCUR(SUBTAB_SQL, SUBTAB_BNDS);
> CLOSE SUBTAB_CUR;
1596,1599c1911,1914
< DBMS_AQADM_INV.EXECUTE_STMT2(' LOCK TABLE ' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||Q_SCHEMA||DQT) || '.' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
< ' IN EXCLUSIVE MODE ');
---
> EXECUTE_STMT3(' LOCK TABLE ' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||Q_SCHEMA||DQT) || '.' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
> ' IN EXCLUSIVE MODE ');
1616,1618c1931,1935
< EXECUTE IMMEDIATE RCPTADD
< USING RCPTID, Q_NAME, AGENT_NAME, AGENT_ADDRESS, 0, PRVTAQIS_BUFFERED_RECP ;
<
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(RCPTADD,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME, AGENT_NAME, AGENT_ADDRESS),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3, 4),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(RCPTID, 0, PRVTAQIS_BUFFERED_RECP),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 5, 6));
1646a1964,1965
> SUBTAB_BNDS AQ$_BND_ARRAY;
> SUBTAB_CUR SYS_REFCURSOR;
1709c2028,2029
< EXECUTE IMMEDIATE SUBTAB_SQL USING SUBID ;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUBTAB_SQL,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID));
1718c2038,2042
< EXECUTE IMMEDIATE SUBTAB_SQL USING CUR_QT_TIME, REMOVE_SCN, SUBID ;
---
>
> SUBTAB_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(STR_VAL => REMOVE_SCN), AQ$_BND(NUM_VAL => SUBID));
> SUBTAB_CUR := KWQAEXGCUR(SUBTAB_SQL, SUBTAB_BNDS);
> CLOSE SUBTAB_CUR;
1770a2095,2096
> SUB_UPD_BNDS AQ$_BND_ARRAY;
> SUB_UPD_CUR SYS_REFCURSOR;
1953,1955c2279,2284
< EXECUTE IMMEDIATE SUB_UPDATE
< USING NEW_RULE_NAME, NEW_TRANS_NAME, FULL_RULESET, FULL_NEG_RULESET,
< CUR_QT_TIME, SUBID ;
---
> SUB_UPD_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => NEW_RULE_NAME),
> AQ$_BND(STR_VAL => NEW_TRANS_NAME), AQ$_BND(STR_VAL => FULL_RULESET),
> AQ$_BND(STR_VAL => FULL_NEG_RULESET), AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(NUM_VAL => SUBID));
> SUB_UPD_CUR := KWQAEXGCUR(SUB_UPDATE, SUB_UPD_BNDS);
> CLOSE SUB_UPD_CUR;
1970c2299,2302
< EXECUTE IMMEDIATE SUB_UPDATE USING CUR_QT_TIME, SUBID ;
---
> SUB_UPD_BNDS := AQ$_BND_ARRAY(AQ$_BND(TM_VAL => CUR_QT_TIME),
> AQ$_BND(NUM_VAL => SUBID));
> SUB_UPD_CUR := KWQAEXGCUR(SUB_UPDATE, SUB_UPD_BNDS);
> CLOSE SUB_UPD_CUR;
1994c2326
< DBMS_AQADM_INV.EXECUTE_STMT2(' DELETE FROM ' ||
---
> EXECUTE_STMT3(' DELETE FROM ' ||
2002c2334
< DBMS_AQADM_INV.EXECUTE_STMT2(' DELETE FROM SYS.AQ$_SUBSCRIBER_TABLE ' ||
---
> DBMS_AQADM_INV.EXECUTE_STMT2(' DELETE FROM SYS.AQ$_SUBSCRIBER_TABLE ' ||
2175c2507
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE '
---
> EXECUTE_STMT3('CREATE TABLE '
2197c2529
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE TABLE '
---
> EXECUTE_STMT3('CREATE TABLE '
2220c2552
< DBMS_AQADM_INV.EXECUTE_STMT2('ALTER TABLE '
---
> EXECUTE_STMT3('ALTER TABLE '
2276c2608
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP TABLE '||
---
> EXECUTE_STMT3('DROP TABLE '||
2279c2611
< IGNORE_DDL_ERROR, TRUE);
---
> IGNORE_DDL_ERROR);
2305c2637
< DBMS_AQADM_INV.EXECUTE_STMT('CREATE OR REPLACE VIEW ' ||
---
> EXECUTE_STMT3('CREATE OR REPLACE VIEW ' ||
2342c2674
< DBMS_AQADM_INV.EXECUTE_STMT2( ' DROP VIEW ' ||
---
> EXECUTE_STMT3(' DROP VIEW ' ||
2363c2695
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE SEQUENCE '||
---
> EXECUTE_STMT3('CREATE SEQUENCE '||
2386c2718
< DBMS_AQADM_INV.EXECUTE_STMT2( 'DROP SEQUENCE '||
---
> EXECUTE_STMT3( 'DROP SEQUENCE '||
2397,2398d2728
< TYPE RS_CUR_TYPE IS REF CURSOR;
< A_CV RS_CUR_TYPE;
2399a2730,2731
> A_SEL_BNDS AQ$_BND_ARRAY;
> A_SEL_CUR SYS_REFCURSOR;
2429c2761,2762
< OPEN A_CV FOR A_SEL_SQL;
---
> A_SEL_BNDS := AQ$_BND_ARRAY();
> A_SEL_CUR := KWQAEXGCUR(A_SEL_SQL, A_SEL_BNDS);
2431,2432c2764,2765
< FETCH A_CV INTO SUB_NAME, OLD_ADDRESS, SUB_ID;
< EXIT WHEN A_CV%NOTFOUND;
---
> FETCH A_SEL_CUR INTO SUB_NAME, OLD_ADDRESS, SUB_ID;
> EXIT WHEN A_SEL_CUR%NOTFOUND;
2469c2802,2804
< EXECUTE IMMEDIATE A_UPD_SQL USING NEW_ADDRESS, SUB_ID;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(A_UPD_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE(NEW_ADDRESS),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUB_ID));
2471c2806
< CLOSE A_CV;
---
> CLOSE A_SEL_CUR;
2496a2832,2833
> SUBSEQ_BNDS AQ$_BND_ARRAY;
> SUBSEQ_CUR SYS_REFCURSOR;
2499a2837,2838
> SQL_BNDS AQ$_BND_ARRAY;
> SQL_CUR SYS_REFCURSOR;
2557,2558c2896,2900
< BEGIN
< EXECUTE IMMEDIATE SUBSEQ_QUERY INTO MAX_SID;
---
> BEGIN
> SUBSEQ_BNDS := AQ$_BND_ARRAY();
> SUBSEQ_CUR := KWQAEXGCUR(SUBSEQ_QUERY, SUBSEQ_BNDS);
> FETCH SUBSEQ_CUR INTO MAX_SID;
> CLOSE SUBSEQ_CUR;
2569c2911
< DBMS_AQADM_INV.EXECUTE_STMT2('DROP SEQUENCE ' ||
---
> EXECUTE_STMT3('DROP SEQUENCE ' ||
2582c2924
< DBMS_AQADM_INV.EXECUTE_STMT2('CREATE SEQUENCE '||
---
> EXECUTE_STMT3('CREATE SEQUENCE '||
2627c2969
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
2634c2976
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
2645c2987
< EXECUTE IMMEDIATE SUB_TXFM_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUB_TXFM_SQL);
2708c3050
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
2716c3058
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
2727c3069
< EXECUTE IMMEDIATE SUB_RSET_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUB_RSET_SQL);
2777,2781c3119,3122
< EXECUTE IMMEDIATE SQLTXT INTO DUMMY USING SCHEMA ;
< BADSUBFK := TRUE;
< WRITE_TRACE('bad fkey: subs with no rule: '|| DUMMY);
< EXCEPTION
< WHEN NO_DATA_FOUND THEN
---
> SQL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => SCHEMA));
> SQL_CUR := KWQAEXGCUR(SQLTXT, SQL_BNDS);
> FETCH SQL_CUR INTO DUMMY;
> IF (SQL_CUR%NOTFOUND) THEN
2783a3125,3130
> ELSE
> BADSUBFK := TRUE;
> WRITE_TRACE('bad fkey: subs with no rule: '|| DUMMY);
> END IF;
> CLOSE SQL_CUR;
> EXCEPTION
2800,2804c3147,3150
< EXECUTE IMMEDIATE SQLTXT INTO IGNORE USING SCHEMA ;
< BADRULEFK := TRUE;
< WRITE_TRACE('bad fkey: rule with no subs: '||IGNORE);
< EXCEPTION
< WHEN NO_DATA_FOUND THEN
---
> SQL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => SCHEMA));
> SQL_CUR := KWQAEXGCUR(SQLTXT, SQL_BNDS);
> FETCH SQL_CUR INTO DUMMY;
> IF (SQL_CUR%NOTFOUND) THEN
2806a3153,3158
> ELSE
> BADRULEFK := TRUE;
> WRITE_TRACE('bad fkey: rule with no subs: '|| IGNORE);
> END IF;
> CLOSE SQL_CUR;
> EXCEPTION
2892a3245,3246
> SQL_BNDS AQ$_BND_ARRAY;
> SQL_CUR SYS_REFCURSOR;
2908,2909c3262,3270
< EXECUTE IMMEDIATE SQLTEXT INTO IGNORE;
< RETURN 4;
---
> SQL_BNDS := AQ$_BND_ARRAY();
> SQL_CUR := KWQAEXGCUR(SQLTEXT, SQL_BNDS);
> FETCH SQL_CUR INTO IGNORE;
> IF (SQL_CUR%FOUND) THEN
> CLOSE SQL_CUR;
> RETURN 4;
> ELSE
> CLOSE SQL_CUR;
> END IF;
2913,2914d3273
< WHEN NO_DATA_FOUND THEN
< NULL;
2924c3283,3286
< EXECUTE IMMEDIATE SQLTEXT INTO IGNORE;
---
> SQL_BNDS := AQ$_BND_ARRAY();
> SQL_CUR := KWQAEXGCUR(SQLTEXT, SQL_BNDS);
> FETCH SQL_CUR INTO IGNORE;
> CLOSE SQL_CUR;
2952a3315,3316
> SEL_BNDS AQ$_BND_ARRAY;
> SEL_CUR SYS_REFCURSOR;
2979c3343,3346
< EXECUTE IMMEDIATE SEL_STMT INTO ROW_EXISTS ;
---
> SEL_BNDS := AQ$_BND_ARRAY();
> SEL_CUR := KWQAEXGCUR(SEL_STMT, SEL_BNDS);
> FETCH SEL_CUR INTO ROW_EXISTS;
> CLOSE SEL_CUR;
2993c3360
< DBMS_AQADM_INV.EXECUTE_STMT2(' LOCK TABLE ' ||
---
> EXECUTE_STMT3(' LOCK TABLE ' ||
3001c3368
< DBMS_AQADM_INV.EXECUTE_STMT2('INSERT INTO '
---
> EXECUTE_STMT3('INSERT INTO '
3013c3380
< DBMS_AQADM_INV.EXECUTE_STMT2('INSERT INTO '
---
> EXECUTE_STMT3('INSERT INTO '
3111,3113c3478,3482
< EXECUTE IMMEDIATE SUB_INSERT
< USING SID, Q_NAME, SUB.NAME, SUB.ADDRESS, SUB.PROTOCOL;
<
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUB_INSERT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME, SUB.NAME, SUB.ADDRESS),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3, 4),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SID, SUB.PROTOCOL),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 5));
3184,3185c3553,3554
< TYPE RT IS REF CURSOR;
< SUBS_RC RT;
---
> SUB_BNDS AQ$_BND_ARRAY;
> SUB_CUR SYS_REFCURSOR;
3235c3604,3605
< OPEN SUBS_RC FOR SUB_SELECT USING Q_NAME;
---
> SUB_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME));
> SUB_CUR := KWQAEXGCUR(SUB_SELECT, SUB_BNDS);
3237,3238c3607,3608
< FETCH SUBS_RC INTO NAME, ADDRESS, PROTOCOL;
< EXIT WHEN SUBS_RC%NOTFOUND;
---
> FETCH SUB_CUR INTO NAME, ADDRESS, PROTOCOL;
> EXIT WHEN SUB_CUR%NOTFOUND;
3271a3642
> CLOSE SUB_CUR;
3281c3652
< DBMS_AQADM_INV.EXECUTE_STMT2(' DELETE FROM ' ||
---
> EXECUTE_STMT3(' DELETE FROM ' ||
3758c4129
< DBMS_AQADM_INV.EXECUTE_STMT('CREATE OR REPLACE VIEW ' ||
---
> EXECUTE_STMT3('CREATE OR REPLACE VIEW ' ||
3821c4192
< DBMS_AQADM_INV.EXECUTE_STMT('CREATE OR REPLACE VIEW ' ||
---
> EXECUTE_STMT3('CREATE OR REPLACE VIEW ' ||
3864c4235
< DBMS_AQADM_INV.EXECUTE_STMT2(' DROP VIEW ' ||
---
> EXECUTE_STMT3(' DROP VIEW ' ||
3970a4342,4343
> INS_BNDS AQ$_BND_ARRAY;
> INS_CUR SYS_REFCURSOR;
3971a4345,4346
> SUB_BNDS AQ$_BND_ARRAY;
> SUB_CUR SYS_REFCURSOR;
3977,3978d4351
< TYPE SUB_C_TYPE IS REF CURSOR;
< SUB_C SUB_C_TYPE;
4030c4403,4404
< OPEN SUB_C FOR SUB_STMT USING QUEUE_NAME ;
---
> SUB_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QUEUE_NAME));
> SUB_CUR := KWQAEXGCUR(SUB_STMT, SUB_BNDS);
4033,4036c4407,4412
< FETCH SUB_C INTO SUBSCRIBER_ID, Q_NAME, SUB_NAME, ADDRESS, PROTOCOL,
< SUBSCR_TYPE, RULE_NAME, TRANS_NAME, RULESET,
< NEGATIVE_RULESET, CREATETIME, MODTIME, DELTIME,
< SCNATREMOVE, SCNATADD ;
---
> FETCH SUB_CUR INTO SUBSCRIBER_ID, Q_NAME, SUB_NAME, ADDRESS, PROTOCOL,
> SUBSCR_TYPE, RULE_NAME, TRANS_NAME, RULESET,
> NEGATIVE_RULESET, CREATETIME, MODTIME, DELTIME,
> SCNATREMOVE, SCNATADD ;
>
> EXIT WHEN SUB_CUR%NOTFOUND;
4049d4424
< EXIT WHEN SUB_C%NOTFOUND;
4052,4058c4427,4440
< EXECUTE IMMEDIATE INS_STMT USING
< POPULATE_SYS_SUBSCRIBER_TABLE.SCHEMA,
< POPULATE_SYS_SUBSCRIBER_TABLE.QUEUE_TABLE, QTAB_OBJ,
< Q_ID, SUBSCRIBER_ID, QUEUE_NAME, SUB_NAME, ADDRESS,
< PROTOCOL, SUBSCR_TYPE, RULE_NAME, TRANS_NAME, RULESET,
< NEGATIVE_RULESET, CREATETIME, MODTIME, DELTIME,
< SCNATREMOVE, SCNATADD ;
---
> INS_BNDS := AQ$_BND_ARRAY(
> AQ$_BND(STR_VAL => POPULATE_SYS_SUBSCRIBER_TABLE.SCHEMA),
> AQ$_BND(STR_VAL => POPULATE_SYS_SUBSCRIBER_TABLE.QUEUE_TABLE),
> AQ$_BND(NUM_VAL => QTAB_OBJ), AQ$_BND(NUM_VAL => Q_ID),
> AQ$_BND(NUM_VAL => SUBSCRIBER_ID), AQ$_BND(STR_VAL => QUEUE_NAME),
> AQ$_BND(STR_VAL => SUB_NAME), AQ$_BND(STR_VAL => ADDRESS),
> AQ$_BND(NUM_VAL => PROTOCOL), AQ$_BND(NUM_VAL => SUBSCR_TYPE),
> AQ$_BND(STR_VAL => RULE_NAME), AQ$_BND(STR_VAL => TRANS_NAME),
> AQ$_BND(STR_VAL => RULESET), AQ$_BND(STR_VAL => NEGATIVE_RULESET),
> AQ$_BND(TM_VAL => CREATETIME), AQ$_BND(TM_VAL => MODTIME),
> AQ$_BND(TM_VAL => DELTIME), AQ$_BND(NUM_VAL => SCNATREMOVE),
> AQ$_BND(NUM_VAL => SCNATADD));
> INS_CUR := KWQAEXGCUR(INS_STMT, INS_BNDS);
> CLOSE INS_CUR;
4067a4450
> CLOSE SUB_CUR;
4113,4114d4495
< TYPE RSUBCURTYP IS REF CURSOR;
< RSUB_CV RSUBCURTYP;
4115a4497,4498
> RULE_BNDS AQ$_BND_ARRAY;
> RULE_CUR SYS_REFCURSOR;
4180,4181c4563,4564
<
< OPEN RSUB_CV FOR RULE_STMT USING QUEUE;
---
> RULE_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QUEUE));
> RULE_CUR := KWQAEXGCUR(RULE_STMT, RULE_BNDS);
4185,4186c4568,4569
< FETCH RSUB_CV INTO RS_NAME, NRS_NAME;
< EXIT WHEN RSUB_CV%NOTFOUND;
---
> FETCH RULE_CUR INTO RS_NAME, NRS_NAME;
> EXIT WHEN RULE_CUR%NOTFOUND;
4212c4595,4596
< END LOOP;
---
> END LOOP;
> CLOSE RULE_CUR;
4304a4689,4690
> RS_SEL_BNDS AQ$_BND_ARRAY;
> RS_SEL_CUR SYS_REFCURSOR;
4307,4308d4692
< TYPE RS_CUR_TYPE IS REF CURSOR;
< RS_CV RS_CUR_TYPE;
4344c4728,4729
< OPEN RS_CV FOR RS_SEL_SQL;
---
> RS_SEL_BNDS := AQ$_BND_ARRAY();
> RS_SEL_CUR := KWQAEXGCUR(RS_SEL_SQL, RS_SEL_BNDS);
4346,4347c4731,4732
< FETCH RS_CV INTO ORIG_RS_NAME, SUB_ID;
< EXIT WHEN RS_CV%NOTFOUND;
---
> FETCH RS_SEL_CUR INTO ORIG_RS_NAME, SUB_ID;
> EXIT WHEN RS_SEL_CUR%NOTFOUND;
4355,4356c4740,4742
< EXECUTE IMMEDIATE RS_UPD_SQL USING '"' || CANON_RS_SNAME || '"',
< SUB_ID;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(RS_UPD_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE('"' || CANON_RS_SNAME || '"'),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUB_ID));
4358c4744,4746
< EXECUTE IMMEDIATE RS_UPD_SQL USING CANON_RS_NAME, SUB_ID;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(RS_UPD_SQL,
> IN_STR_ARRAY => STR_ARRAY_TYPE(CANON_RS_SNAME),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUB_ID));
4362c4750,4751
< EXECUTE IMMEDIATE RS_UPD_SQL_DUMMY USING SUB_ID;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(RS_UPD_SQL_DUMMY,
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUB_ID));
4365c4754
< CLOSE RS_CV;
---
> CLOSE RS_SEL_CUR;
4379a4769,4770
> COMPRESS_BNDS AQ$_BND_ARRAY;
> COMPRESS_CUR SYS_REFCURSOR;
4392c4783,4787
< EXECUTE IMMEDIATE COMPRESS_SQL INTO TAB_SP1 USING ST_NAME, QT_SCHEMA ;
---
> COMPRESS_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => ST_NAME),
> AQ$_BND(STR_VAL => QT_SCHEMA));
> COMPRESS_CUR := KWQAEXGCUR(COMPRESS_SQL, COMPRESS_BNDS);
> FETCH COMPRESS_CUR INTO TAB_SP1;
> CLOSE COMPRESS_CUR;
4400c4795
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
4476c4871
< EXECUTE IMMEDIATE SUB_COLUMN_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUB_COLUMN_SQL);
4533c4928
< EXECUTE IMMEDIATE RS_EXP_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(RS_EXP_SQL);
4562c4957
< EXECUTE IMMEDIATE NO_CMPRS_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(NO_CMPRS_SQL);
4570c4965
< EXECUTE IMMEDIATE REBUILD_IDX_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(REBUILD_IDX_SQL);
4580c4975
< EXECUTE IMMEDIATE SUB_RSET_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUB_RSET_SQL);
4601,4602c4996,4997
< TYPE RSUBCURTYP IS REF CURSOR;
< RSUB_CV RSUBCURTYP;
---
> SUB_BNDS AQ$_BND_ARRAY;
> SUB_CUR SYS_REFCURSOR;
4614c5009
< EXECUTE IMMEDIATE SUBTAB_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUBTAB_SQL);
4621c5016
< EXECUTE IMMEDIATE SUBTAB_SQL;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(SUBTAB_SQL);
4635c5030,5032
< OPEN RSUB_CV FOR SUB_STMT;
---
>
> SUB_BNDS := AQ$_BND_ARRAY();
> SUB_CUR := KWQAEXGCUR(SUB_STMT, SUB_BNDS);
4639,4640c5036,5037
< FETCH RSUB_CV INTO Q_NAME, SUBID, RULE_NAME;
< EXIT WHEN RSUB_CV%NOTFOUND;
---
> FETCH SUB_CUR INTO Q_NAME, SUBID, RULE_NAME;
> EXIT WHEN SUB_CUR%NOTFOUND;
4662,4663c5059,5062
<
< EXECUTE IMMEDIATE UPD_STMT USING RULESET_NAME, RULE_NAME, SUBID;
---
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPD_STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(RULESET_NAME, RULE_NAME),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID));
4665a5065
> CLOSE SUB_CUR;
4679,4688c5079,5090
< SUBTAB_SEL VARCHAR2(1024);
< SUB_TABLE DBMS_QUOTED_ID2;
< SUBID NUMBER;
< SUB_RULE_NAME VARCHAR2(128);
< Q_NAME VARCHAR2(128);
< UPD_SUB_TXT VARCHAR2(1024);
< DF_RS_NM VARCHAR2(128);
< RULE_NM VARCHAR2(128);
< RULESET_NAME DBMS_QUOTED_ID2;
< DROP_RULE_TAB VARCHAR2(1024);
---
> SUBTAB_SEL VARCHAR2(1024);
> SUBTAB_BNDS AQ$_BND_ARRAY;
> SUBTAB_CUR SYS_REFCURSOR;
> SUB_TABLE DBMS_QUOTED_ID2;
> SUBID NUMBER;
> SUB_RULE_NAME VARCHAR2(128);
> Q_NAME VARCHAR2(128);
> UPD_SUB_TXT VARCHAR2(1024);
> DF_RS_NM VARCHAR2(128);
> RULE_NM VARCHAR2(128);
> RULESET_NAME DBMS_QUOTED_ID2;
> DROP_RULE_TAB VARCHAR2(1024);
4697,4702c5099,5100
< SUBCUR := DBMS_SQL.OPEN_CURSOR;
< DBMS_SQL.PARSE(SUBCUR, SUBTAB_SEL, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(SUBCUR, 1, SUBID);
< DBMS_SQL.DEFINE_COLUMN(SUBCUR, 2, SUB_RULE_NAME, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(SUBCUR, 3, Q_NAME, M_IDEN_LEN);
< IGNORE := DBMS_SQL.EXECUTE(SUBCUR);
---
> SUBTAB_BNDS := AQ$_BND_ARRAY();
> SUBTAB_CUR := KWQAEXGCUR(SUBTAB_SEL, SUBTAB_BNDS);
4705,4734c5103,5125
< IF (DBMS_SQL.FETCH_ROWS(SUBCUR) > 0) THEN
< BEGIN
< DBMS_SQL.COLUMN_VALUE(SUBCUR, 1, SUBID);
< DBMS_SQL.COLUMN_VALUE(SUBCUR, 2, SUB_RULE_NAME);
< DBMS_SQL.COLUMN_VALUE(SUBCUR, 3, Q_NAME);
<
< WRITE_TRACE('upgrade_90_92: sub_rule_name = ' || SUB_RULE_NAME);
< WRITE_TRACE('upgrade_90_92: q_name = ' || Q_NAME);
<
<
<
< DF_RS_NM := GET_DEFAULT_RULESET(Q_NAME, SUBID);
< RULE_NM := GET_RULE_NAME(Q_NAME, SUBID);
< DBMS_PRVTAQIS.ADD_QUEUE_RULE(
< '"'||QT_SCHEMA ||'"'||'.'||'"'||DF_RS_NM||'"',
< QT_SCHEMA, QT_NAME, QT_SCHEMA,
< RULE_NM, NULL);
<
< UPD_SUB_TXT := 'UPDATE '|| SUB_TABLE ||
< ' SET rule_name = :1, ruleset_name = :2 '||
< ' WHERE subscriber_id = :3';
< EXECUTE IMMEDIATE UPD_SUB_TXT USING RULE_NM, DF_RS_NM, SUBID;
<
< EXCEPTION
< WHEN OTHERS THEN
< RAISE;
< END;
< ELSE
< EXIT;
< END IF;
---
> BEGIN
> FETCH SUBTAB_CUR INTO SUBID, SUB_RULE_NAME, Q_NAME;
> EXIT WHEN SUBTAB_CUR%NOTFOUND;
>
> WRITE_TRACE('upgrade_90_92: sub_rule_name = ' || SUB_RULE_NAME);
> WRITE_TRACE('upgrade_90_92: q_name = ' || Q_NAME);
>
>
>
> DF_RS_NM := GET_DEFAULT_RULESET(Q_NAME, SUBID);
> RULE_NM := GET_RULE_NAME(Q_NAME, SUBID);
> DBMS_PRVTAQIS.ADD_QUEUE_RULE(
> '"'||QT_SCHEMA ||'"'||'.'||'"'||DF_RS_NM||'"',
> QT_SCHEMA, QT_NAME, QT_SCHEMA,
> RULE_NM, NULL);
>
> UPD_SUB_TXT := 'UPDATE '|| SUB_TABLE ||
> ' SET rule_name = :1, ruleset_name = :2 '||
> ' WHERE subscriber_id = :3';
>
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPD_SUB_TXT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(RULE_NM, DF_RS_NM),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID));
4736,4737c5127,5132
< END LOOP;
< DBMS_SQL.CLOSE_CURSOR(SUBCUR);
---
> EXCEPTION
> WHEN OTHERS THEN
> RAISE;
> END;
> END LOOP;
> CLOSE SUBTAB_CUR;
4744c5139
< EXECUTE IMMEDIATE DROP_RULE_TAB;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(DROP_RULE_TAB);
4758a5154,5155
> SUBTAB_BNDS AQ$_BND_ARRAY;
> SUBTAB_CUR SYS_REFCURSOR;
4772,4778c5169,5171
< SUBCUR := DBMS_SQL.OPEN_CURSOR;
< DBMS_SQL.PARSE(SUBCUR, SUBTAB_SEL, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(SUBCUR, 1, SUBID);
< DBMS_SQL.DEFINE_COLUMN(SUBCUR, 2, SUB_RULE_NAME, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(SUBCUR, 3, SUB_RULESET_NAME, M_IDEN_LEN);
<
< IGNORE := DBMS_SQL.EXECUTE(SUBCUR);
---
>
> SUBTAB_BNDS := AQ$_BND_ARRAY();
> SUBTAB_CUR := KWQAEXGCUR(SUBTAB_SEL, SUBTAB_BNDS);
4781,4794c5174,5179
< IF (DBMS_SQL.FETCH_ROWS(SUBCUR) > 0) THEN
< BEGIN
< DBMS_SQL.COLUMN_VALUE(SUBCUR, 1, SUBID);
< DBMS_SQL.COLUMN_VALUE(SUBCUR, 2, SUB_RULE_NAME);
< DBMS_SQL.COLUMN_VALUE(SUBCUR, 3, SUB_RULESET_NAME);
<
< WRITE_TRACE('downgrade_92_90: sub_rule_name = ' || SUB_RULE_NAME);
< WRITE_TRACE('downgrade_92_90: sub_ruleset_name = ' || SUB_RULESET_NAME);
<
< IF (SUB_RULE_NAME IS NOT NULL) THEN
<
< DBMS_PRVTAQIS.DROP_QUEUE_RULE_SET(
< QT_SCHEMA ||'.'||SUB_RULESET_NAME,
< QT_SCHEMA, QT_NAME, FALSE);
---
> BEGIN
> FETCH SUBTAB_CUR INTO SUBID, SUB_RULE_NAME, SUB_RULESET_NAME;
> EXIT WHEN SUBTAB_CUR%NOTFOUND;
>
> WRITE_TRACE('downgrade_92_90: sub_rule_name = ' || SUB_RULE_NAME);
> WRITE_TRACE('downgrade_92_90: sub_ruleset_name = ' || SUB_RULESET_NAME);
4796c5181,5187
< UPD_SUB_TXT := 'UPDATE '|| SUB_TABLE ||
---
> IF (SUB_RULE_NAME IS NOT NULL) THEN
>
> DBMS_PRVTAQIS.DROP_QUEUE_RULE_SET(
> QT_SCHEMA ||'.'||SUB_RULESET_NAME,
> QT_SCHEMA, QT_NAME, FALSE);
>
> UPD_SUB_TXT := 'UPDATE '|| SUB_TABLE ||
4800,4801d5190
< EXECUTE IMMEDIATE UPD_SUB_TXT
< USING GET_OLD_RULE_NAME(SUBID), SUBID;
4803,4811c5192,5202
< END IF;
< EXCEPTION
< WHEN OTHERS THEN
< NULL;
< END;
< ELSE
< EXIT;
< END IF;
< END LOOP;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(UPD_SUB_TXT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(GET_OLD_RULE_NAME(SUBID)),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(SUBID));
>
> END IF;
> EXCEPTION
> WHEN OTHERS THEN
> NULL;
> END;
> END LOOP;
> CLOSE SUBTAB_CUR;
4815d5205
< DBMS_SQL.CLOSE_CURSOR(SUBCUR);
4825,4826c5215,5220
< RULE_STMT VARCHAR2(500);
< ECTX_STMT VARCHAR2(500);
---
> RULE_STMT VARCHAR2(500);
> RULE_BNDS AQ$_BND_ARRAY;
> RULE_CUR SYS_REFCURSOR;
> ECTX_STMT VARCHAR2(500);
> ECTX_BNDS AQ$_BND_ARRAY;
> ECTX_CUR SYS_REFCURSOR;
4832,4833d5225
< TYPE RSUBCURTYP IS REF CURSOR;
< RSUB_CV RSUBCURTYP;
4865c5257,5258
< OPEN RSUB_CV FOR RULE_STMT;
---
> RULE_BNDS := AQ$_BND_ARRAY();
> RULE_CUR := KWQAEXGCUR(RULE_STMT, RULE_BNDS);
4868,4869c5261,5262
< FETCH RSUB_CV INTO RULE_NAME;
< EXIT WHEN RSUB_CV%NOTFOUND;
---
> FETCH RULE_CUR INTO RULE_NAME;
> EXIT WHEN RULE_CUR%NOTFOUND;
4884a5278
> CLOSE RULE_CUR;
4890c5284,5285
< OPEN RSUB_CV FOR RULE_STMT USING Q_NAME;
---
> RULE_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME));
> RULE_CUR := KWQAEXGCUR(RULE_STMT, RULE_BNDS);
4893,4894c5288,5289
< FETCH RSUB_CV INTO RULE_NAME;
< EXIT WHEN RSUB_CV%NOTFOUND;
---
> FETCH RULE_CUR INTO RULE_NAME;
> EXIT WHEN RULE_CUR%NOTFOUND;
4898,4901c5293,5303
< BEGIN
< EXECUTE IMMEDIATE ECTX_STMT INTO RECTX_NAME
< USING QT_SCHEMA, RULE_NAME;
<
---
> ECTX_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => QT_SCHEMA),
> AQ$_BND(STR_VAL => RULE_NAME));
> ECTX_CUR := KWQAEXGCUR(ECTX_STMT, ECTX_BNDS);
> FETCH ECTX_CUR INTO RECTX_NAME;
>
> IF (ECTX_CUR%NOTFOUND) THEN
> DBMS_SYSTEM.KSDWRT(DBMS_SYSTEM.ALERT_FILE,
> 'Warning:upgrade_rule_10i: rule not present:'||
> QT_SCHEMA || '.'||RULE_NAME);
> CNG_ECTX := FALSE;
> ELSE
4908,4915c5310,5311
<
< EXCEPTION
< WHEN NO_DATA_FOUND THEN
< DBMS_SYSTEM.KSDWRT(DBMS_SYSTEM.ALERT_FILE,
< 'Warning:upgrade_rule_10i: rule not present:'||
< QT_SCHEMA || '.'||RULE_NAME);
< CNG_ECTX := FALSE;
< END;
---
> END IF;
> CLOSE ECTX_CUR;
4934a5331
> CLOSE RULE_CUR;
4943c5340,5342
< RULE_STMT VARCHAR2(500);
---
> RULE_STMT VARCHAR2(500);
> RULE_BNDS AQ$_BND_ARRAY;
> RULE_CUR SYS_REFCURSOR;
4948,4949d5346
< TYPE RSUBCURTYP IS REF CURSOR;
< RSUB_CV RSUBCURTYP;
4960c5357,5358
< OPEN RSUB_CV FOR RULE_STMT;
---
> RULE_BNDS := AQ$_BND_ARRAY();
> RULE_CUR := KWQAEXGCUR(RULE_STMT, RULE_BNDS);
4963,4964c5361,5362
< FETCH RSUB_CV INTO RULE_NAME;
< EXIT WHEN RSUB_CV%NOTFOUND;
---
> FETCH RULE_CUR INTO RULE_NAME;
> EXIT WHEN RULE_CUR%NOTFOUND;
4979c5377,5378
< END LOOP;
---
> END LOOP;
> CLOSE RULE_CUR;
4989a5389,5390
> STAB_BNDS AQ$_BND_ARRAY;
> STAB_CUR SYS_REFCURSOR;
5002,5006c5403,5404
< DBMS_SQL.PARSE(STAB_CURSOR, SEL_STMT, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(STAB_CURSOR, 1, RSET_NAM, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(STAB_CURSOR, 2, RULE_NAM, M_IDEN_LEN);
<
< IGNORE := DBMS_SQL.EXECUTE(STAB_CURSOR);
---
> STAB_BNDS := AQ$_BND_ARRAY();
> STAB_CUR := KWQAEXGCUR(SEL_STMT, STAB_BNDS);
5009,5011c5407,5408
< IF DBMS_SQL.FETCH_ROWS(STAB_CURSOR) > 0 THEN
< BEGIN
<
---
> FETCH STAB_CUR INTO RSET_NAM, RULE_NAM;
> EXIT WHEN STAB_CUR%NOTFOUND;
5013,5014c5410,5411
< DBMS_SQL.COLUMN_VALUE(STAB_CURSOR, 1, RSET_NAM);
< DBMS_SQL.COLUMN_VALUE(STAB_CURSOR, 2, RULE_NAM);
---
> BEGIN
>
5016,5017c5413,5414
< WRITE_TRACE('fix_subtab: rset_nam = ' || RSET_NAM);
< WRITE_TRACE('fix_subtab: rule_nam = ' || RULE_NAM);
---
> WRITE_TRACE('fix_subtab: rset_nam = ' || RSET_NAM);
> WRITE_TRACE('fix_subtab: rule_nam = ' || RULE_NAM);
5019,5031c5416,5426
< DBMS_RULE_ADM.ADD_RULE(DQT||RSCHEMA||DQT || '.'||
< DQT||RULE_NAM||DQT,
< DQT||RSCHEMA||DQT || '.'||
< DQT||RSET_NAM||DQT);
< EXCEPTION
< WHEN RULE_ALREADY_ADDED THEN
< DBMS_SYSTEM.KSDWRT(1, 'already added rule: '||RULE_NAM ||
< 'to ruleset: ' || RSET_NAM);
< END;
< ELSE
< EXIT;
< END IF;
< END LOOP;
---
> DBMS_RULE_ADM.ADD_RULE(DQT||RSCHEMA||DQT || '.'||
> DQT||RULE_NAM||DQT,
> DQT||RSCHEMA||DQT || '.'||
> DQT||RSET_NAM||DQT);
> EXCEPTION
> WHEN RULE_ALREADY_ADDED THEN
> DBMS_SYSTEM.KSDWRT(1, 'already added rule: '||RULE_NAM ||
> 'to ruleset: ' || RSET_NAM);
> END;
> END LOOP;
> CLOSE STAB_CUR;
5036d5430
< QTAB_CURSOR INTEGER;
5038a5433,5434
> QTAB_BNDS AQ$_BND_ARRAY;
> QTAB_CUR SYS_REFCURSOR;
5048,5054c5444,5445
< QTAB_CURSOR := DBMS_SQL.OPEN_CURSOR;
<
< DBMS_SQL.PARSE(QTAB_CURSOR, QTAB_STMT, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(QTAB_CURSOR, 1, QTAB_SCHEMA, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(QTAB_CURSOR, 2, QTAB_NAME, M_IDEN_LEN);
<
< IGNORE := DBMS_SQL.EXECUTE(QTAB_CURSOR);
---
> QTAB_BNDS := AQ$_BND_ARRAY();
> QTAB_CUR := KWQAEXGCUR(QTAB_STMT, QTAB_BNDS);
5057,5059c5448,5449
< IF DBMS_SQL.FETCH_ROWS(QTAB_CURSOR) > 0 THEN
< DBMS_SQL.COLUMN_VALUE(QTAB_CURSOR, 1, QTAB_SCHEMA);
< DBMS_SQL.COLUMN_VALUE(QTAB_CURSOR, 2, QTAB_NAME);
---
> FETCH QTAB_CUR INTO QTAB_SCHEMA, QTAB_NAME;
> EXIT WHEN QTAB_CUR%NOTFOUND;
5061,5062c5451,5452
< WRITE_TRACE('fix_subscriber_tables_2424746: qtab_schema ' || QTAB_SCHEMA);
< WRITE_TRACE('fix_subscriber_tables_2424746: qtab_name ' || QTAB_NAME);
---
> WRITE_TRACE('fix_subscriber_tables_2424746: qtab_schema ' || QTAB_SCHEMA);
> WRITE_TRACE('fix_subscriber_tables_2424746: qtab_name ' || QTAB_NAME);
5064,5066c5454,5456
< SUB_TAB := DBMS_ASSERT.ENQUOTE_NAME(DQT||QTAB_SCHEMA||DQT) || '.' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$_'||QTAB_NAME||'_S'||DQT);
<
---
> SUB_TAB := DBMS_ASSERT.ENQUOTE_NAME(DQT||QTAB_SCHEMA||DQT) || '.' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$_'||QTAB_NAME||'_S'||DQT);
>
5068c5458
< FIX_SUBTAB(QTAB_SCHEMA, SUB_TAB);
---
> FIX_SUBTAB(QTAB_SCHEMA, SUB_TAB);
5070,5072d5459
< ELSE
< EXIT;
< END IF;
5074d5460
<
5076,5079c5462
< IF DBMS_SQL.IS_OPEN(QTAB_CURSOR) THEN
< DBMS_SQL.CLOSE_CURSOR(QTAB_CURSOR);
< WRITE_TRACE('fix_subscriber_tables_2424746: close_cursor');
< END IF;
---
> CLOSE QTAB_CUR;
5104c5487,5489
< SELRSUB_STMT VARCHAR2(600);
---
> SELRSUB_STMT VARCHAR2(600);
> SELRSUB_BNDS AQ$_BND_ARRAY;
> SELRSUB_CUR SYS_REFCURSOR;
5105a5491,5492
> SUBSELQNO_BNDS AQ$_BND_ARRAY;
> SUBSELQNO_CUR SYS_REFCURSOR;
5106a5494,5495
> DEQUIOT_BNDS AQ$_BND_ARRAY;
> DEQUIOT_CUR SYS_REFCURSOR;
5107a5497,5498
> HISTIOT_BNDS AQ$_BND_ARRAY;
> HISTIOT_CUR SYS_REFCURSOR;
5122a5514,5515
> ADDR_SEL_BNDS AQ$_BND_ARRAY;
> ADDR_SEL_CUR SYS_REFCURSOR;
5146,5155c5539,5541
< STMT_CSR1 := DBMS_SQL.OPEN_CURSOR;
< DBMS_SQL.PARSE(STMT_CSR1, SELRSUB_STMT, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 1, SUBID);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 2, SUBNAM, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 3, SUBADDR, 1024);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 4, SUBPROTO);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 5, SUBTYP);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 6, RULE_NAM, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 7, Q_NAME, M_IDEN_LEN);
< ROWS_PROCESSED := DBMS_SQL.EXECUTE(STMT_CSR1);
---
> SELRSUB_BNDS := AQ$_BND_ARRAY();
>
> SELRSUB_CUR := KWQAEXGCUR(SELRSUB_STMT, SELRSUB_BNDS);
5159,5175c5545,5554
< IF DBMS_SQL.FETCH_ROWS(STMT_CSR1) > 0 THEN
<
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 1, SUBID);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 2, SUBNAM);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 3, SUBADDR);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 4, SUBPROTO);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 5, SUBTYP);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 6, RULE_NAM);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 7, Q_NAME);
<
<
< WRITE_TRACE('subnam : ' || SUBNAM);
<
<
<
< WRITE_TRACE('rule_nam : ' || RULE_NAM);
< WRITE_TRACE('q_name : ' || Q_NAME);
---
> FETCH SELRSUB_CUR INTO SUBID, SUBNAM, SUBADDR, SUBPROTO, SUBTYP, RULE_NAM,
> Q_NAME;
> EXIT WHEN SELRSUB_CUR%NOTFOUND;
>
> WRITE_TRACE('subnam : ' || SUBNAM);
>
>
>
> WRITE_TRACE('rule_nam : ' || RULE_NAM);
> WRITE_TRACE('q_name : ' || Q_NAME);
5177,5178c5556,5557
<
< SUBSELQNO := ' SELECT subscriber_id ' ||
---
>
> SUBSELQNO := ' SELECT subscriber_id ' ||
5185,5189c5564,5571
< WRITE_TRACE('subselstmt : ' || SUBSELQNO);
<
< EXECUTE IMMEDIATE SUBSELQNO INTO QUEUE_NO
< USING Q_NAME, QT_SCHEMA ||'.'||Q_NAME,
< DQT || QT_SCHEMA || DQT || '.' || DQT || Q_NAME || DQT;
---
> WRITE_TRACE('subselstmt : ' || SUBSELQNO);
>
> SUBSELQNO_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => QT_SCHEMA ||'.'||Q_NAME),
> AQ$_BND(STR_VAL => DQT || QT_SCHEMA || DQT || '.' || DQT || Q_NAME || DQT));
> SUBSELQNO_CUR := KWQAEXGCUR(SUBSELQNO, SUBSELQNO_BNDS);
> FETCH SUBSELQNO_CUR INTO QUEUE_NO;
> CLOSE SUBSELQNO_CUR;
5191c5573
<
---
>
5193,5194c5575,5576
<
< IF (SUBADDR IS NOT NULL) OR (SUBPROTO != 0) THEN
---
>
> IF (SUBADDR IS NOT NULL) OR (SUBPROTO != 0) THEN
5200,5202c5582,5584
< BEGIN
<
< SYS.DBMS_AQADM_INV.PARSE_NAME(
---
> BEGIN
>
> SYS.DBMS_AQADM_INV.PARSE_NAME(
5207c5589
< ADDR_SEL_STMT := ' SELECT subscriber_id ' ||
---
> ADDR_SEL_STMT := ' SELECT subscriber_id ' ||
5215,5221c5597,5604
<
< EXECUTE IMMEDIATE ADDR_SEL_STMT INTO ADDRNO
< USING Q_NAME, SUBADDR, DB_DOM, SUBADDR, DB_DOM,
< DBLKCONQ, SUBADDR;
<
<
< EXCEPTION
---
> ADDR_SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUBADDR), AQ$_BND(STR_VAL => DB_DOM),
> AQ$_BND(STR_VAL => SUBADDR), AQ$_BND(STR_VAL => DB_DOM),
> AQ$_BND(STR_VAL => DBLKCONQ), AQ$_BND(STR_VAL => SUBADDR));
>
> ADDR_SEL_CUR := KWQAEXGCUR(ADDR_SEL_STMT, ADDR_SEL_BNDS);
> FETCH ADDR_SEL_CUR INTO ADDRNO;
> IF (ADDR_SEL_CUR%NOTFOUND) THEN
5223,5227c5606,5611
< WHEN NO_DATA_FOUND THEN
<
<
< GOTO NEXT_RSUB;
< END;
---
> CLOSE ADDR_SEL_CUR;
> GOTO NEXT_RSUB;
> ELSE
> CLOSE ADDR_SEL_CUR;
> END IF;
> END;
5238,5241c5622,5626
<
< EXECUTE IMMEDIATE ADDR_SEL_STMT INTO ADDRNO
< USING Q_NAME, SUBADDR, SUBPROTO;
< EXCEPTION
---
> ADDR_SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUBADDR), AQ$_BND(NUM_VAL => SUBPROTO));
> ADDR_SEL_CUR := KWQAEXGCUR(ADDR_SEL_STMT, ADDR_SEL_BNDS);
> FETCH ADDR_SEL_CUR INTO ADDRNO;
> IF (ADDR_SEL_CUR%NOTFOUND) THEN
5243,5246c5628,5632
< WHEN NO_DATA_FOUND THEN
<
<
< GOTO NEXT_RSUB;
---
> CLOSE ADDR_SEL_CUR;
> GOTO NEXT_RSUB;
> ELSE
> CLOSE ADDR_SEL_CUR;
> END IF;
5287,5288c5673,5680
< EXECUTE IMMEDIATE HISTIOT_UPD USING SUBID, ZSUBNAME, SUBNAM, ADDRNO,
< MESSID RETURNING BULK COLLECT INTO MSGLIST;
---
>
> HISTIOT_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUBID),
> AQ$_BND(STR_VAL => ZSUBNAME), AQ$_BND(STR_VAL => SUBNAM),
> AQ$_BND(NUM_VAL => ADDRNO), AQ$_BND(RAW_VAL => MESSID),
> AQ$_BND(RAW_VAL => NULL, BMODE => 1));
> HISTIOT_CUR := KWQAEXGCUR(HISTIOT_UPD, HISTIOT_BNDS);
> MSGLAST := HISTIOT_BNDS(6).RAW_VAL;
>
5292,5294c5684,5689
< MSGLAST := MSGLIST(MSGLIST.LAST);
< EXECUTE IMMEDIATE HISTIOT_UPD USING SUBID, ZSUBNAME, SUBNAM, ADDRNO,
< MSGLAST RETURNING BULK COLLECT INTO MSGLIST;
---
> HISTIOT_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUBID),
> AQ$_BND(STR_VAL => ZSUBNAME), AQ$_BND(STR_VAL => SUBNAM),
> AQ$_BND(NUM_VAL => ADDRNO), AQ$_BND(RAW_VAL => MSGLAST),
> AQ$_BND(RAW_VAL => NULL, BMODE => 1));
> HISTIOT_CUR := KWQAEXGCUR(HISTIOT_UPD, HISTIOT_BNDS);
> MSGLAST := HISTIOT_BNDS(6).RAW_VAL;
5297c5692,5693
< IF SQL%NOTFOUND THEN
---
> IF (HISTIOT_CUR%ROWCOUNT = 0) THEN
> CLOSE HISTIOT_CUR;
5298a5695,5696
> ELSE
> CLOSE HISTIOT_CUR;
5306,5307c5704,5709
< EXECUTE IMMEDIATE DEQUIOT_UPD USING SUBID, ZSUBNAME, SUBNAM, QUEUE_NO;
< IF SQL%NOTFOUND THEN
---
> DEQUIOT_BNDS := AQ$_BND_ARRAY(AQ$_BND(NUM_VAL => SUBID),
> AQ$_BND(STR_VAL => ZSUBNAME), AQ$_BND(STR_VAL => SUBNAM),
> AQ$_BND(NUM_VAL => QUEUE_NO));
> DEQUIOT_CUR := KWQAEXGCUR(DEQUIOT_UPD, DEQUIOT_BNDS);
> IF (DEQUIOT_CUR%ROWCOUNT = 0) THEN
> CLOSE DEQUIOT_CUR;
5308a5711,5712
> ELSE
> CLOSE DEQUIOT_CUR;
5313,5315d5716
< ELSE
< EXIT;
< END IF;
5321d5721
<
5323,5325c5723,5724
< IF DBMS_SQL.IS_OPEN(STMT_CSR1) THEN
< DBMS_SQL.CLOSE_CURSOR(STMT_CSR1);
< END IF;
---
> CLOSE SELRSUB_CUR;
>
5329,5330c5728,5729
< IF DBMS_SQL.IS_OPEN(STMT_CSR1) THEN
< DBMS_SQL.CLOSE_CURSOR(STMT_CSR1);
---
> IF (SELRSUB_CUR%ISOPEN) THEN
> CLOSE SELRSUB_CUR;
5333,5334c5732,5733
< IF DBMS_SQL.IS_OPEN(STMT_CSR1) THEN
< DBMS_SQL.CLOSE_CURSOR(STMT_CSR1);
---
> IF (SELRSUB_CUR%ISOPEN) THEN
> CLOSE SELRSUB_CUR;
5336c5735
< RAISE;
---
> RAISE;
5354,5355d5752
< TABLE_DOES_NOT_EXIST EXCEPTION;
< PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942);
5366c5763,5765
< SELRSUB_STMT VARCHAR2(400);
---
> SELRSUB_STMT VARCHAR2(400);
> SELRSUB_BNDS AQ$_BND_ARRAY;
> SELRSUB_CUR SYS_REFCURSOR;
5367a5767,5768
> SUBSELQNO_BNDS AQ$_BND_ARRAY;
> SUBSELQNO_CUR SYS_REFCURSOR;
5384a5786,5787
> ADDR_SEL_BNDS AQ$_BND_ARRAY;
> ADDR_SEL_CUR SYS_REFCURSOR;
5402,5412c5805,5806
< STMT_CSR1 := DBMS_SQL.OPEN_CURSOR;
< DBMS_SQL.PARSE(STMT_CSR1, SELRSUB_STMT, DBMS_SQL.V7);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 1, SUBID);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 2, SUBNAM, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 3, SUBADDR, 1024);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 4, SUBPROTO);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 5, SUBTYP);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 6, RULE_NAM, M_IDEN_LEN);
< DBMS_SQL.DEFINE_COLUMN(STMT_CSR1, 7, Q_NAME, M_IDEN_LEN);
< ROWS_PROCESSED := DBMS_SQL.EXECUTE(STMT_CSR1);
<
---
> SELRSUB_BNDS := AQ$_BND_ARRAY();
> SELRSUB_CUR := KWQAEXGCUR(SELRSUB_STMT, SELRSUB_BNDS);
5414,5415d5807
< LOOP
< IF DBMS_SQL.FETCH_ROWS(STMT_CSR1) > 0 THEN
5417,5423c5809,5812
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 1, SUBID);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 2, SUBNAM);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 3, SUBADDR);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 4, SUBPROTO);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 5, SUBTYP);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 6, RULE_NAM);
< DBMS_SQL.COLUMN_VALUE(STMT_CSR1, 7, Q_NAME);
---
> LOOP
> FETCH SELRSUB_CUR INTO SUBID, SUBNAM, SUBADDR, SUBPROTO, SUBTYP, RULE_NAM,
> Q_NAME;
> EXIT WHEN SELRSUB_CUR%NOTFOUND;
5425,5431c5814,5820
<
< WRITE_TRACE('subnam : ' || SUBNAM);
<
<
<
< WRITE_TRACE('rule_nam : ' || RULE_NAM);
< WRITE_TRACE('q_name : ' || Q_NAME);
---
>
> WRITE_TRACE('subnam : ' || SUBNAM);
>
>
>
> WRITE_TRACE('rule_nam : ' || RULE_NAM);
> WRITE_TRACE('q_name : ' || Q_NAME);
5433,5434c5822,5823
<
< SUBSELQNO := ' SELECT subscriber_id ' ||
---
>
> SUBSELQNO := ' SELECT subscriber_id ' ||
5441,5444c5830,5836
<
<
< EXECUTE IMMEDIATE SUBSELQNO INTO QUEUE_NO
< USING Q_NAME, QT_SCHEMA ||'.'||Q_NAME;
---
>
>
> SUBSELQNO_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => QT_SCHEMA ||'.'||Q_NAME));
> SUBSELQNO_CUR := KWQAEXGCUR(SUBSELQNO, SUBSELQNO_BNDS);
> FETCH SUBSELQNO_CUR INTO QUEUE_NO;
> CLOSE SUBSELQNO_CUR;
5455d5846
< BEGIN
5469a5861,5870
> ADDR_SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUBADDR), AQ$_BND(STR_VAL => DB_DOM),
> AQ$_BND(STR_VAL => SUBADDR), AQ$_BND(STR_VAL => DB_DOM),
> AQ$_BND(STR_VAL => DBLKCONQ), AQ$_BND(STR_VAL => SUBADDR));
>
> ADDR_SEL_CUR := KWQAEXGCUR(ADDR_SEL_STMT, ADDR_SEL_BNDS);
> FETCH ADDR_SEL_CUR INTO ADDRNO;
> IF (ADDR_SEL_CUR%NOTFOUND) THEN
>
>
5471,5481c5872
< EXECUTE IMMEDIATE ADDR_SEL_STMT INTO ADDRNO
< USING Q_NAME, SUBADDR, DB_DOM, SUBADDR, DB_DOM,
< DBLKCONQ, SUBADDR;
<
<
<
< EXCEPTION
<
< WHEN NO_DATA_FOUND THEN
<
<
---
>
5483,5487c5874,5878
< CRE_ADDR_STMT := 'INSERT INTO '||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
< '(subscriber_id, queue_name, name, address, '||
< ' protocol, subscriber_type) '||
---
> CRE_ADDR_STMT := 'INSERT INTO '||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
> '(subscriber_id, queue_name, name, address, '||
> ' protocol, subscriber_type) '||
5495c5886
<
---
>
5497c5888
<
---
>
5504,5510c5895,5901
<
<
<
< IF (MY_DB_DOM = DB_DOM) THEN
< ADDR_ENTRY := RQSCHEMA||'.'||RQNAME||'@'||DB_NAME;
< ELSE
< ADDR_ENTRY := SUBADDR;
---
>
>
>
> IF (MY_DB_DOM = DB_DOM) THEN
> ADDR_ENTRY := RQSCHEMA||'.'||RQNAME||'@'||DB_NAME;
> ELSE
> ADDR_ENTRY := SUBADDR;
5513,5514c5904,5905
<
< ADDRNO := SYS.DBMS_PRVTAQIS.AGENTID(QT_SCHEMA, QT_NAME);
---
>
> ADDRNO := SYS.DBMS_PRVTAQIS.AGENTID(QT_SCHEMA, QT_NAME);
5517,5520c5908,5914
< EXECUTE IMMEDIATE CRE_ADDR_STMT
< USING ADDRNO, Q_NAME, ADDR_ENTRY;
<
< END;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(CRE_ADDR_STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(Q_NAME, ADDR_ENTRY),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2, 3),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(ADDRNO),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1));
> END IF;
> CLOSE ADDR_SEL_CUR;
5522,5536c5916,5930
< BEGIN
<
< ADDR_SEL_STMT := ' SELECT subscriber_id ' ||
< ' FROM ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' ||
< DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
< ' WHERE subscriber_type = 4 ' ||
< ' AND queue_name = :1 AND name IS NULL ' ||
< ' AND address = :2 AND protocol = :3 ';
<
< EXECUTE IMMEDIATE ADDR_SEL_STMT INTO ADDRNO
< USING Q_NAME, SUBADDR, SUBPROTO;
< EXCEPTION
<
< WHEN NO_DATA_FOUND THEN
< CRE_ADDR_STMT := 'INSERT INTO '||
---
>
> ADDR_SEL_STMT := ' SELECT subscriber_id ' ||
> ' FROM ' || DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' ||
> DBMS_ASSERT.ENQUOTE_NAME(DQT||SUBTAB_NAME||DQT) ||
> ' WHERE subscriber_type = 4 ' ||
> ' AND queue_name = :1 AND name IS NULL ' ||
> ' AND address = :2 AND protocol = :3 ';
>
> ADDR_SEL_BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME),
> AQ$_BND(STR_VAL => SUBADDR), AQ$_BND(NUM_VAL => SUBPROTO));
>
> ADDR_SEL_CUR := KWQAEXGCUR(ADDR_SEL_STMT, ADDR_SEL_BNDS);
> FETCH ADDR_SEL_CUR INTO ADDRNO;
> IF (ADDR_SEL_CUR%NOTFOUND) THEN
> CRE_ADDR_STMT := 'INSERT INTO '||
5542,5543c5936,5937
<
< ADDRNO := SYS.DBMS_PRVTAQIS.AGENTID(QT_SCHEMA, QT_NAME);
---
>
> ADDRNO := SYS.DBMS_PRVTAQIS.AGENTID(QT_SCHEMA, QT_NAME);
5545,5547c5939,5945
< EXECUTE IMMEDIATE CRE_ADDR_STMT
< USING ADDRNO, SUBADDR, SUBPROTO;
< END;
---
> EXECUTE_STMT_IN_KERNEL_CURSOR(CRE_ADDR_STMT,
> IN_STR_ARRAY => STR_ARRAY_TYPE(SUBADDR),
> IN_STRPOS_ARRAY => NUM_ARRAY_TYPE(2),
> IN_NUM_ARRAY => NUM_ARRAY_TYPE(ADDRNO, SUBPROTO),
> IN_NUMPOS_ARRAY => NUM_ARRAY_TYPE(1, 3));
> END IF;
> CLOSE ADDR_SEL_CUR;
5592,5594d5989
< ELSE
< EXIT;
< END IF;
5596d5990
<
5598,5600c5992
< IF DBMS_SQL.IS_OPEN(STMT_CSR1) THEN
< DBMS_SQL.CLOSE_CURSOR(STMT_CSR1);
< END IF;
---
> CLOSE SELRSUB_CUR;
5604,5605c5996,5997
< IF DBMS_SQL.IS_OPEN(STMT_CSR1) THEN
< DBMS_SQL.CLOSE_CURSOR(STMT_CSR1);
---
> IF (SELRSUB_CUR%ISOPEN) THEN
> CLOSE SELRSUB_CUR;
5608,5609c6000,6001
< IF DBMS_SQL.IS_OPEN(STMT_CSR1) THEN
< DBMS_SQL.CLOSE_CURSOR(STMT_CSR1);
---
> IF (SELRSUB_CUR%ISOPEN) THEN
> CLOSE SELRSUB_CUR;
5611c6003
< RAISE;
---
> RAISE;
5633a6026,6027
> BNDS AQ$_BND_ARRAY;
> CUR SYS_REFCURSOR;
5655a6050,6053
> BNDS := AQ$_BND_ARRAY(AQ$_BND(STR_VAL => Q_NAME));
> CUR := KWQAEXGCUR(BUFF_SUB_COUNT, BNDS);
> FETCH CUR INTO QBS_COUNT;
> CLOSE CUR;
5657,5658d6054
< EXECUTE IMMEDIATE BUFF_SUB_COUNT INTO QBS_COUNT USING Q_NAME;
<
5712,5774d6107
<
< PROCEDURE AQ_INTERNAL_EXESTMT(
< SQL_STMT IN VARCHAR2,
< OPCODE IN NUMBER DEFAULT NULL,
< BYPASS_DV IN BOOLEAN DEFAULT TRUE,
< BYPASS_AUDIT IN BOOLEAN DEFAULT TRUE,
< IN_STR_ARRAY IN STR_ARRAY_TYPE DEFAULT NULL,
< IN_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUM_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_STR_ARRAY IN OUT STR_ARRAY_TYPE,
< OUT_STRPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< OUT_NUM_ARRAY IN OUT NUM_ARRAY_TYPE,
< OUT_NUMPOS_ARRAY IN NUM_ARRAY_TYPE DEFAULT NULL,
< IN_RAW_PARAM1 IN RAW DEFAULT NULL,
< IN_RAW_PARAM2 IN RAW DEFAULT NULL,
< IN_BINT_PARAM1 IN BINARY_INTEGER DEFAULT NULL,
< IN_BINT_PARAM2 IN BINARY_INTEGER DEFAULT NULL,
< IN_INT_PARAM1 IN PLS_INTEGER DEFAULT NULL,
< IN_INT_PARAM2 IN PLS_INTEGER DEFAULT NULL,
< IN_TIME_PARAM1 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< IN_TIME_PARAM2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
< OUT_RAW_PARAM1 OUT RAW,
< OUT_RAW_PARAM2 OUT RAW,
< OUT_BINT_PARAM1 OUT BINARY_INTEGER,
< OUT_BINT_PARAM2 OUT BINARY_INTEGER,
< OUT_INT_PARAM1 OUT PLS_INTEGER,
< OUT_INT_PARAM2 OUT PLS_INTEGER,
< OUT_TIME_PARAM1 OUT TIMESTAMP WITH TIME ZONE,
< OUT_TIME_PARAM2 OUT TIMESTAMP WITH TIME ZONE)
< IS EXTERNAL
< NAME "aq_internal_exeStmt"
< WITH CONTEXT
< PARAMETERS(CONTEXT,
< SQL_STMT OCISTRING, SQL_STMT INDICATOR SB2,
< OPCODE OCINUMBER, OPCODE INDICATOR SB2,
< BYPASS_DV SB4, BYPASS_DV INDICATOR SB2,
< BYPASS_AUDIT SB4, BYPASS_AUDIT INDICATOR SB2,
< IN_STR_ARRAY OCICOLL, IN_STR_ARRAY INDICATOR SB2,
< IN_STRPOS_ARRAY OCICOLL, IN_STRPOS_ARRAY INDICATOR SB2,
< IN_NUM_ARRAY OCICOLL, IN_NUM_ARRAY INDICATOR SB2,
< IN_NUMPOS_ARRAY OCICOLL, IN_NUMPOS_ARRAY INDICATOR SB2,
< OUT_STR_ARRAY OCICOLL, OUT_STR_ARRAY INDICATOR SB2,
< OUT_STRPOS_ARRAY OCICOLL, OUT_STRPOS_ARRAY INDICATOR SB2,
< OUT_NUM_ARRAY OCICOLL, OUT_NUM_ARRAY INDICATOR SB2,
< OUT_NUMPOS_ARRAY OCICOLL, OUT_NUMPOS_ARRAY INDICATOR SB2,
< IN_RAW_PARAM1 OCIRAW, IN_RAW_PARAM1 INDICATOR SB2,
< IN_RAW_PARAM2 OCIRAW, IN_RAW_PARAM2 INDICATOR SB2,
< IN_BINT_PARAM1 UB4, IN_BINT_PARAM1 INDICATOR SB2,
< IN_BINT_PARAM2 UB4, IN_BINT_PARAM2 INDICATOR SB2,
< IN_INT_PARAM1 SB4, IN_INT_PARAM1 INDICATOR SB2,
< IN_INT_PARAM2 SB4, IN_INT_PARAM2 INDICATOR SB2,
< IN_TIME_PARAM1 OCIDATETIME, IN_TIME_PARAM1 INDICATOR SB2,
< IN_TIME_PARAM2 OCIDATETIME, IN_TIME_PARAM2 INDICATOR SB2,
< OUT_RAW_PARAM1 OCIRAW, OUT_RAW_PARAM1 INDICATOR SB2,
< OUT_RAW_PARAM2 OCIRAW, OUT_RAW_PARAM2 INDICATOR SB2,
< OUT_BINT_PARAM1 UB4, OUT_BINT_PARAM1 INDICATOR SB2,
< OUT_BINT_PARAM2 UB4, OUT_BINT_PARAM2 INDICATOR SB2,
< OUT_INT_PARAM1 SB4, OUT_INT_PARAM1 INDICATOR SB2,
< OUT_INT_PARAM2 SB4, OUT_INT_PARAM2 INDICATOR SB2,
< OUT_TIME_PARAM1 OCIDATETIME, OUT_TIME_PARAM1 INDICATOR SB2,
< OUT_TIME_PARAM2 OCIDATETIME, OUT_TIME_PARAM2 INDICATOR SB2)
< LIBRARY DBMS_AQINT_LIB;
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.04.01.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.04.02.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.05.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.06.00.00'; 10986c10986,10987 < WHERE CON.CON_ID >= 1; --- > WHERE CON.CON_ID >= 1 > ORDER BY CON.CON_ID; 30686a30688,30743 > > > PROCEDURE LISTPDBS > IS > BEGIN > DEB(DEB_ENTER, 'listPdbs'); > > > IF (TRANSLATEPDBNAME_C%ISOPEN) THEN > CLOSE TRANSLATEPDBNAME_C; > END IF; > > OPEN TRANSLATEPDBNAME_C; > > > DEB(DEB_EXIT); > END LISTPDBS; > > > FUNCTION LISTGETPDB( > PDBNAME OUT VARCHAR2, > PDBID OUT NUMBER, > PDBGUID OUT VARCHAR2) > RETURN NUMBER IS > LOCAL PDBNAMEREC_T; > BEGIN > > > FETCH TRANSLATEPDBNAME_C INTO LOCAL; > IF TRANSLATEPDBNAME_C%NOTFOUND THEN > DEB(DEB_PRINT, 'found all the PDBs, closing translatePdbName_c'); > CLOSE TRANSLATEPDBNAME_C; > RETURN FALSE#; > ELSE > PDBNAME := LOCAL.NAME; > PDBID := LOCAL.PDBID; > PDBGUID := LOCAL.PDBGUID; > RETURN TRUE#; > END IF; > > END LISTGETPDB; > > > PROCEDURE ENDLISTPDBS > IS > BEGIN > DEB(DEB_ENTER, 'endListPdbs'); > > > IF (TRANSLATEPDBNAME_C%ISOPEN) THEN > CLOSE TRANSLATEPDBNAME_C; > END IF; > > > DEB(DEB_EXIT); > END ENDLISTPDBS;
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.05.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.05.01.00';
728d727
< EMPTY_FILTER VARCHAR2(25);
730,749d728
< DELETE FROM SMB$CONFIG;
<
<
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE) VALUES
< ('SPACE_BUDGET_PERCENT', 10);
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE) VALUES
< ('PLAN_RETENTION_WEEKS', 53);
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE) VALUES
< ('SPM_TRACING', 0);
<
<
< EMPTY_FILTER := '<filters></filters>';
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
< VALUES ('AUTO_CAPTURE_PARSING_SCHEMA_NAME', 0, EMPTY_FILTER);
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
< VALUES ('AUTO_CAPTURE_MODULE', 0, EMPTY_FILTER);
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
< VALUES ('AUTO_CAPTURE_ACTION', 0, EMPTY_FILTER);
< INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
< VALUES ('AUTO_CAPTURE_SQL_TEXT', 0, EMPTY_FILTER);
753c732
< DBMS_SPM_INTERNAL.LOAD_AUTO_EVOLVE_TASK_CONFIG;
---
> DBMS_SPM_INTERNAL.LOAD_SPM_SMB_CONFIG;
535,538c535,537
< SYS.DBMS_SPM_INTERNAL.CHECK_AUTO_SPM_ENABLED;
<
< DBMS_AUTO_TASK_ADMIN.ENABLE('Auto SPM Task', NULL, NULL);
< DBMS_AUTO_TASK_ADMIN.ENABLE('Auto STS Capture Task', NULL, NULL);
---
>
>
>
544a544,549
>
>
> SYS.DBMS_SPM_INTERNAL.CHECK_AUTO_SPM_ENABLED;
>
> DBMS_AUTO_TASK_ADMIN.ENABLE('Auto SPM Task', NULL, NULL);
> DBMS_AUTO_TASK_ADMIN.ENABLE('Auto STS Capture Task', NULL, NULL);
9c9,10 < PLAN_RETENTION_WEEKS_DEFAULT CONSTANT NUMBER := 53; --- > PLAN_RETENTION_WEEKS_DEFAULT CONSTANT NUMBER := > DBMS_SPM_INTERNAL.PLAN_RETENTION_WEEKS_DEFAULT; 15c16,17 < SPACE_BUDGET_PERCENT_DEFAULT CONSTANT NUMBER := 10; --- > SPACE_BUDGET_PERCENT_DEFAULT CONSTANT NUMBER := > DBMS_SPM_INTERNAL.SPACE_BUDGET_PERCENT_DEFAULT; 528c530,532 < IF (PARAMETER_NAME = DBMS_SPM_INTERNAL.AUTO_SPM_EVOLVE_TASK) THEN --- > IF (PARAMETER_NAME = SYS.DBMS_SPM_INTERNAL.AUTO_SPM_EVOLVE_TASK) THEN > > 534a539,551 > > > > > > > SYS.PRVT_ADVISOR.SET_TASK_PARAMETER( > TASK_NAME => SYS.DBMS_SPM_INTERNAL.AUTO_EVOLVE_TASK_NAME, > PARAMETER => PAR_ALTERNATE_BASELINE, > DATA => SYS.DBMS_SPM_INTERNAL.AUTO_EVOLVE_TASK_ALTERNATE_VAL, > TASK_OWNER_ID => SYS.PRVT_ADVISOR.SYS_USER_ID); > > 539,544d555 < < < DBMS_ADVISOR.SET_TASK_PARAMETER( < DBMS_SPM_INTERNAL.AUTO_EVOLVE_TASK_NAME, < PAR_ALTERNATE_BASELINE, < DBMS_SPM_INTERNAL.AUTO_EVOLVE_TASK_ALTERNATE_VAL);
91c91 < source.elapsed_time, source.executions, --- > source.elapsed_time, source.executions DESC NULLS LAST, 94a95,113 > > > > > > > > > > > > > > > ALTERNATE_PLAN_ORDER_BY_AI VARCHAR2(32767) := > ' ORDER BY source.elapsed_time, source.cpu_time, source.buffer_gets, > source.executions DESC NULLS LAST, source.disk_reads, > source.direct_writes '; > 107,108c126 < cc.buffer_gets, < cc.direct_writes, --- > cc.buffer_gets, cc.direct_writes, 494c512 < min(cpu_plus_io)) > :ratio * 100) --- > min(cpu_plus_io)) > :ratio / 100) 511a530,533 > > > > 551c573,577 < and ai.execution_name = spa.exec_name) highload #'; --- > and ai.execution_name = spa.exec_name > and not exists > (select 1 from dba_sql_plan_baselines b > where dbms_sqltune_util0.sqltext_to_sqlid(b.sql_text) = ai.sql_id_vc > and b.accepted = 'YES')) highload #'; 1662c1688,1695 < PROCEDURE LOAD_AUTO_EVOLVE_TASK_CONFIG --- > > > > > > PROCEDURE INIT_SPM_SMB_PARAMETERS( > PARAMETER_NAME IN VARCHAR2, > PARAMETER_VALUE IN NUMBER) 1663a1697,1698 > EXIST_CNT NUMBER; > EMPTY_FILTER VARCHAR(25); 1666,1668c1701,1703 < INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA) < VALUES (AUTO_SPM_EVOLVE_TASK, 0, < AUTO_SPM_EVOLVE_TASK_DEFAULT); --- > SELECT COUNT(*) INTO EXIST_CNT > FROM SMB$CONFIG > WHERE PARAMETER_NAME = INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME; 1670,1672c1705,1736 < INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE) VALUES < (AUTO_SPM_EVOLVE_TASK_ITV, < AUTO_EVOLVE_TASK_ITV_DEFAULT); --- > IF (EXIST_CNT = 0) THEN > > IF (PARAMETER_NAME IN (SPACE_BUDGET_PERCENT, PLAN_RETENTION_WEEKS, > SPM_TRACING, AUTO_SPM_EVOLVE_TASK_ITV, > AUTO_SPM_EVOLVE_TASK_MAX_RT )) THEN > > INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE) > VALUES (INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME, > INIT_SPM_SMB_PARAMETERS.PARAMETER_VALUE); > > > ELSIF(PARAMETER_NAME IN (AUTOCAP_SQL_TEXT, AUTOCAP_MODULE, > AUTOCAP_ACTION, AUTOCAP_USER)) THEN > > EMPTY_FILTER := '<filters></filters>'; > INSERT INTO SMB$CONFIG > (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA) > VALUES (INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME, > INIT_SPM_SMB_PARAMETERS.PARAMETER_VALUE, EMPTY_FILTER); > > > ELSIF(PARAMETER_NAME = AUTO_SPM_EVOLVE_TASK) THEN > INSERT INTO SMB$CONFIG > (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA) > VALUES (INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME, > INIT_SPM_SMB_PARAMETERS.PARAMETER_VALUE, > AUTO_SPM_EVOLVE_TASK_DEFAULT); > END IF; > > END IF; > > END INIT_SPM_SMB_PARAMETERS; 1674,1676d1737 < INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE) VALUES < (AUTO_SPM_EVOLVE_TASK_MAX_RT, < AUTO_EVOLVE_TASK_MAX_RT_DEF); 1678c1739,1784 < END LOAD_AUTO_EVOLVE_TASK_CONFIG; --- > > > > > > > > > > > > > > > PROCEDURE LOAD_SPM_SMB_CONFIG > IS > BEGIN > > INIT_SPM_SMB_PARAMETERS(SPACE_BUDGET_PERCENT, > SPACE_BUDGET_PERCENT_DEFAULT); > INIT_SPM_SMB_PARAMETERS(PLAN_RETENTION_WEEKS, > PLAN_RETENTION_WEEKS_DEFAULT); > INIT_SPM_SMB_PARAMETERS(SPM_TRACING, SPM_TRACING_DEFAULT); > > > INIT_SPM_SMB_PARAMETERS(AUTOCAP_SQL_TEXT, 0); > INIT_SPM_SMB_PARAMETERS(AUTOCAP_MODULE, 0); > INIT_SPM_SMB_PARAMETERS(AUTOCAP_ACTION, 0); > INIT_SPM_SMB_PARAMETERS(AUTOCAP_USER, 0); > > > > INIT_SPM_SMB_PARAMETERS(AUTO_SPM_EVOLVE_TASK, 0); > INIT_SPM_SMB_PARAMETERS(AUTO_SPM_EVOLVE_TASK_ITV, > AUTO_EVOLVE_TASK_ITV_DEFAULT); > INIT_SPM_SMB_PARAMETERS(AUTO_SPM_EVOLVE_TASK_MAX_RT, > AUTO_EVOLVE_TASK_MAX_RT_DEF); > > > DBMS_SPM.CONFIGURE(AUTO_SPM_EVOLVE_TASK, AUTO_SPM_EVOLVE_TASK_DEFAULT); > > EXCEPTION > WHEN OTHERS THEN > NULL; > > END LOAD_SPM_SMB_CONFIG; 3145a3252,3259 > > > > > > > > 3150c3264 < DECODE(STATS.TESTEXEC_TOTAL_EXECS, 0, 0, NULL, 0, --- > DECODE(STATS.EXECUTIONS, 0, 0, NULL, 0, 3152d3265 < /STATS.TESTEXEC_TOTAL_EXECS 3155c3268 < DECODE(STATS.TESTEXEC_TOTAL_EXECS, 0, 0, NULL, 0, --- > DECODE(STATS.EXECUTIONS, 0, 0, NULL, 0, 3157d3269 < /STATS.TESTEXEC_TOTAL_EXECS 3160,3161c3272,3273 < DECODE(STATS.TESTEXEC_TOTAL_EXECS, 0, 0, NULL, 0, < FLOOR(STATS.BUFFER_GETS/STATS.TESTEXEC_TOTAL_EXECS)), --- > DECODE(STATS.EXECUTIONS, 0, 0, NULL, 0, > STATS.BUFFER_GETS), 3163,3168c3275,3280 < DECODE(STATS.TESTEXEC_TOTAL_EXECS, 0, 0, NULL, 0, < FLOOR(STATS.DISK_READS/STATS.TESTEXEC_TOTAL_EXECS)), < DECODE(STATS.TESTEXEC_TOTAL_EXECS, 0, 0, NULL, 0, < FLOOR(STATS.DIRECT_WRITES/STATS.TESTEXEC_TOTAL_EXECS)), < DECODE(STATS.TESTEXEC_TOTAL_EXECS, 0, 0, NULL, 0, < FLOOR(STATS.ROWS_PROCESSED/STATS.TESTEXEC_TOTAL_EXECS)) --- > DECODE(STATS.EXECUTIONS, 0, 0, NULL, 0, > STATS.DISK_READS), > DECODE(STATS.EXECUTIONS, 0, 0, NULL, 0, > STATS.DIRECT_WRITES), > DECODE(STATS.EXECUTIONS, 0, 0, NULL, 0, > STATS.ROWS_PROCESSED) 4485,4486c4597,4602 < source.plan_hash_value <> highload.plan_hash_value' < || ALTERNATE_PLAN_ORDER_BY_CLAUSE || ')'; --- > source.plan_hash_value <> highload.plan_hash_value'; > IF(AIMODE) THEN > ALT_QUERY := ALT_QUERY || ALTERNATE_PLAN_ORDER_BY_AI || ')'; > ELSE > ALT_QUERY := ALT_QUERY || ALTERNATE_PLAN_ORDER_BY_CLAUSE || ')'; > END IF; 4889,4892c5005,5016 < FETCH_NAME_USING_SIG_CAT_PID( < DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(PLAN_ROW.SQL_TEXT, < FALSE), DBMS_SMB_INTERNAL.DEFAULT_VAL, < PLAN_ROW.PLAN_HASH_VALUE) IS NOT NULL) THEN --- > FETCH_NAME_USING_SIG_CAT_PID( > DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(PLAN_ROW.SQL_TEXT, > FALSE), DBMS_SMB_INTERNAL.DEFAULT_VAL, > PLAN_ROW.PLAN_HASH_VALUE) IS NOT NULL AND > > > > > > > > NOT AI_MODE) THEN 5273,5276c5397,5408 < FETCH_NAME_USING_SIG_CAT_PID( < DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(PLAN_ROW_STS.SQL_TEXT,FALSE), < DBMS_SMB_INTERNAL.DEFAULT_VAL, < PLAN_ROW_STS.PLAN_HASH_VALUE) IS NOT NULL) THEN --- > FETCH_NAME_USING_SIG_CAT_PID( > DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(PLAN_ROW_STS.SQL_TEXT,FALSE), > DBMS_SMB_INTERNAL.DEFAULT_VAL, > PLAN_ROW_STS.PLAN_HASH_VALUE) IS NOT NULL AND > > > > > > > > NOT AI_MODE) THEN 5756c5888 < (FETCH_NAME_USING_SIG_CAT_PID( --- > FETCH_NAME_USING_SIG_CAT_PID( 5759c5891,5899 < SQLSET_REC.PLAN_HASH_VALUE) IS NOT NULL)) THEN --- > SQLSET_REC.PLAN_HASH_VALUE) IS NOT NULL AND > > > > > > > > NOT AI_MODE) THEN
14291c14291,14294
< (SELECT INST_ID,
---
> (SELECT *
> FROM
> TABLE(GV$(CURSOR(
> SELECT USERENV('instance') AS INST_ID,
14408,14409c14411,14412
< FROM GV$ALL_SQL_MONITOR MO1
< WHERE MO1.INST_ID BETWEEN I_REPORT_SQL_MONITOR_XML.TARGET_INST_ID_LOW
---
> FROM V$ALL_SQL_MONITOR MO1
> WHERE USERENV('INSTANCE') BETWEEN I_REPORT_SQL_MONITOR_XML.TARGET_INST_ID_LOW
14432c14435,14437
< MO1.PX_SERVER#)))),
---
> MO1.PX_SERVER#)))
> )))
> ),
18021,18039c18026,18056
< (SELECT LO.SQL_PLAN_LINE_ID PLAN_LINE_ID,
< DECODE(SUM(LO.TOTALWORK), 0, NULL,
< ROUND(SUM(LO.SOFAR)*100/SUM(LO.TOTALWORK)))
< PERCENT_COMPLETE,
< MAX(LO.TIME_REMAINING) TIME_REMAINING
< FROM GV$SESSION_LONGOPS LO,
< MONITOR_DATA MO
< WHERE (I_REPORT_SQL_MONITOR_XML.TARGET_IS_RUNNING = 'Y'
< OR I_REPORT_SQL_MONITOR_XML.TARGET_STATUS =
< 'DONE (ERROR)')
< AND LO.SQL_ID
< = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_ID
< AND LO.SQL_EXEC_START
< = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_START
< AND LO.SQL_EXEC_ID
< = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_ID
< AND LO.INST_ID = MO.INST_ID
< AND LO.SID = MO.SID
< GROUP BY LO.SQL_PLAN_LINE_ID) LO,
---
> (SELECT LO2.SQL_PLAN_LINE_ID PLAN_LINE_ID,
> DECODE(SUM(LO2.TOTALWORK), 0, NULL,
> ROUND(SUM(LO2.SOFAR)*100/SUM(LO2.TOTALWORK)))
> PERCENT_COMPLETE,
> MAX(LO2.TIME_REMAINING) TIME_REMAINING
> FROM MONITOR_DATA MO,
> (SELECT *
> FROM
> TABLE(
> GV$(CURSOR(
> SELECT USERENV('instance') INST_ID,
> SQL_PLAN_LINE_ID,
> TOTALWORK,
> SOFAR,
> TIME_REMAINING,
> SID
> FROM V$SESSION_LONGOPS L
> WHERE (I_REPORT_SQL_MONITOR_XML.TARGET_IS_RUNNING = 'Y'
> OR I_REPORT_SQL_MONITOR_XML.TARGET_STATUS =
> 'DONE (ERROR)')
> AND L.SQL_ID
> = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_ID
> AND L.SQL_EXEC_START
> = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_START
> AND L.SQL_EXEC_ID
> = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_ID
> )))) LO2
> WHERE
> LO2.INST_ID = MO.INST_ID
> AND LO2.SID = MO.SID
> GROUP BY LO2.SQL_PLAN_LINE_ID ) LO,
18260c18277,18294
< FROM GV$ALL_SQL_PLAN_MONITOR A) PLM,
---
> FROM
> (SELECT * FROM TABLE(GV$(CURSOR(
> SELECT USERENV('instance') INST_ID, A0.*
> FROM V$ALL_SQL_PLAN_MONITOR A0
> WHERE
> A0.SQL_ID = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_ID
> AND A0.SQL_EXEC_START
> = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_START
> AND A0.SQL_EXEC_ID
> = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_ID
> AND USERENV('instance')
> BETWEEN
> I_REPORT_SQL_MONITOR_XML.TARGET_INST_ID_LOW
> AND
> I_REPORT_SQL_MONITOR_XML.TARGET_INST_ID_HIGH
> )))
> ) A
> ) PLM,
18262,18268c18296
< WHERE PLM.SQL_ID =
< I_REPORT_SQL_MONITOR_XML.TARGET_SQL_ID
< AND PLM.SQL_EXEC_START
< = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_START
< AND PLM.SQL_EXEC_ID
< = I_REPORT_SQL_MONITOR_XML.TARGET_SQL_EXEC_ID
< AND PLM.INST_ID = MO.INST_ID
---
> WHERE PLM.INST_ID = MO.INST_ID
45689c45689 < := 'dbms_stats.ather_system_stats(gathering_mode=>''flush_cache'');'; --- > := 'dbms_stats.gather_system_stats(gathering_mode=>''flush_cache'');';
3655c3655,3657 < DBMS_STATS_INTERNAL.WRITE_CLOB_TO_FILE(DIR_NAME, FILE_NAME, SCRIPT); --- > > > DBMS_LOB.CLOB2FILE(SCRIPT, DIR_NAME, FILE_NAME);
17973a17974,18028
> IF RPT_INST IS NOT NULL AND L_DBID = SYS_CONTEXT('USERENV', 'DBID') THEN
> BEGIN
> CURSOR_STR_IN :=
> 'SELECT distinct sp.instance_number
> FROM ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT
> || 'pdb_in_snap sp, '
> || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT
> || 'pdb_in_snap ep
> WHERE sp.dbid = :dbid
> AND ep.dbid = :dbid
> AND sp.snap_id = :bid
> AND ep.snap_id = :eid
> AND sp.con_dbid = SYS_CONTEXT(''USERENV'', ''CON_DBID'')
> AND sp.con_dbid = ep.con_dbid
> AND sp.instance_number = ep.instance_number';
>
> DBMS_UMF_PROTECTED.PSF_INIT_DEFINES(DEFS);
>
> DBMS_UMF_PROTECTED.PSF_INIT_BINDS(BINDS);
> DBMS_UMF_PROTECTED.PSF_ADD_BIND(
> DBMS_UMF_PROTECTED.PSF_BIND_DBID_TYPE, L_DBID, BINDS);
> DBMS_UMF_PROTECTED.PSF_ADD_BIND(
> DBMS_UMF_PROTECTED.PSF_BIND_BID_TYPE, L_BEGIN_SNAP, BINDS);
> DBMS_UMF_PROTECTED.PSF_ADD_BIND(
> DBMS_UMF_PROTECTED.PSF_BIND_EID_TYPE, L_END_SNAP, BINDS);
>
> NUM_ROWS := DBMS_UMF_PROTECTED.PSF_EXECUTE_QUERY(
> CURSOR_STR_IN, DBMS_UMF_PROTECTED.PSF_INST_LIST_QUERY_TYPE,
> DEFS, BINDS, PS_ENV_FLAG);
>
> IF NUM_ROWS = 0 THEN
> RAISE NO_DATA_FOUND;
> END IF;
>
> DBMS_UMF_PROTECTED.PSF_GET_DEFINE(DEFS, 1, RPT_INST);
>
> EXCEPTION
>
>
> WHEN NO_DATA_FOUND THEN
> COMMENTS := COMMENTS ||
> '-> Error: no instance open at database ' ||
> SYS_CONTEXT('USERENV', 'CON_DBID') ||
> ' during specified snapshot interval ' ||
> L_BEGIN_SNAP || '-' || L_END_SNAP || NL_CHR;
> WHEN OTHERS THEN
> COMMENTS := COMMENTS ||
> '-> checking for error at awr_root_pdb_in_snap '
> || SQLERRM || NL_CHR;
> RAISE;
>
> END;
> END IF;
>
>
10a11,23
>
>
>
>
> FUNCTION KWQAEXGCUR(STMT IN VARCHAR2,
> BND_ARRAY IN OUT AQ$_BND_ARRAY,
> USER IN VARCHAR2 DEFAULT NULL,
> FLAGS IN PLS_INTEGER DEFAULT NULL,
> OPCODE IN PLS_INTEGER DEFAULT NULL)
> RETURN SYS_REFCURSOR;
> PRAGMA INTERFACE(C, KWQAEXGCUR);
>
>
181c194,195
<
---
> TRANS_BNDS AQ$_BND_ARRAY;
> TRANS_CUR SYS_REFCURSOR;
198,199c212,213
< EXECUTE IMMEDIATE
< 'SELECT trans_name FROM ' ||
---
> TRANS_BNDS := AQ$_BND_ARRAY();
> TRANS_CUR := KWQAEXGCUR('SELECT trans_name FROM ' ||
203,204c217,219
< ' GROUP BY trans_name ORDER BY trans_name'
< BULK COLLECT INTO TRANS_NAMES;
---
> ' GROUP BY trans_name ORDER BY trans_name', TRANS_BNDS);
> FETCH TRANS_CUR BULK COLLECT INTO TRANS_NAMES;
> CLOSE TRANS_CUR;
16c16 < TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512); --- > TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767);
8c8 < TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(512); --- > TYPE STR_ARRAY_TYPE IS VARRAY(100) OF VARCHAR2(32767); 16c16,17 < END; --- > END; >
26836c26836 < V_SINGLE_DDL_CLOB); --- > DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB, 1500, 1)); 27382,27383c27382,27384 < NVL(TO_CHAR(BIND_PATTERN), 'NULL') || ',' || < DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB,100,1)); --- > NVL(TO_CHAR(BIND_PATTERN), 'NULL') || ', ddllen=' || > LENGTH(V_SINGLE_DDL_CLOB) || ', ' || > DBMS_LOB.SUBSTR(V_SINGLE_DDL_CLOB,250,1));
0a1,40 > TYPE aq$_bnd FORCE AS OBJECT ( > dtype NUMBER, /* data type of bind variable > 0 - VARCHAR2 > 1 - NUMBER > 2 - RAW > 3 - TIMESTAMP WITH TIMEZONE > 4 - UROWID > */ > bmode NUMBER, /* bind mode (IN|OUT) > 0 - IN, 1 - OUT */ > > sz NUMBER, /* Maximum size of data buffer > in case of OUT bind */ > > /* Depending the datatype set in dtype, only one of the following > * fields is used at any given point. > */ > str_val VARCHAR2(32767), > num_val NUMBER, > raw_val RAW(32767), > tm_val TIMESTAMP WITH TIME ZONE, > > /* Constructors overloaded for different data types > * > * PARAMETERS TO CONSTRUCTOR METHODS: > * > * xxx_val - Data value of the bind variable > * bmode - Bind mode (IN|OUT) > * 0 - IN, 1 - OUT > * size - Maximum size of data buffer in case of out bind > * Used oly for constructor methods of VARCHAR2, RAW, LONG RAW types > */ > > CONSTRUCTOR FUNCTION aq$_bnd(str_val VARCHAR2, bmode PLS_INTEGER DEFAULT 0, sz PLS_INTEGER DEFAULT 0) RETURN SELF AS RESULT, > CONSTRUCTOR FUNCTION aq$_bnd(num_val NUMBER, bmode PLS_INTEGER DEFAULT 0) RETURN SELF AS RESULT, > CONSTRUCTOR FUNCTION aq$_bnd(raw_val RAW, bmode PLS_INTEGER DEFAULT 0, sz PLS_INTEGER DEFAULT 0) RETURN SELF AS RESULT, > CONSTRUCTOR FUNCTION aq$_bnd(tm_val TIMESTAMP WITH TIME ZONE, bmode PLS_INTEGER DEFAULT 0) RETURN SELF AS RESULT, > CONSTRUCTOR FUNCTION aq$_bnd(urowid_val VARCHAR2, bmode PLS_INTEGER DEFAULT 0) RETURN SELF AS RESULT > ) NOT PERSISTABLE; >
0a1 > TYPE aq$_bnd_array FORCE IS VARRAY(64) OF (aq$_bnd) NOT PERSISTABLE;
0a1,57 > TYPE BODY aq$_bnd AS > > CONSTRUCTOR FUNCTION aq$_bnd(str_val VARCHAR2, bmode PLS_INTEGER DEFAULT 0, > sz PLS_INTEGER DEFAULT 0) > RETURN SELF AS RESULT IS > BEGIN > SELF.dtype := 0; > SELF.bmode := bmode; > SELF.sz := sz; > SELF.str_val := str_val; > RETURN; > END; > > CONSTRUCTOR FUNCTION aq$_bnd(num_val NUMBER, bmode PLS_INTEGER DEFAULT 0) > RETURN SELF AS RESULT IS > BEGIN > SELF.dtype := 1; > SELF.bmode := bmode; > SELF.sz := 0; > SELF.num_val := num_val; > RETURN; > END; > > CONSTRUCTOR FUNCTION aq$_bnd(raw_val RAW, bmode PLS_INTEGER DEFAULT 0, > sz PLS_INTEGER DEFAULT 0) > RETURN SELF AS RESULT IS > BEGIN > SELF.dtype := 2; > SELF.bmode := bmode; > SELF.sz := sz; > SELF.raw_val := raw_val; > RETURN; > END; > > CONSTRUCTOR FUNCTION aq$_bnd(tm_val TIMESTAMP WITH TIME ZONE, > bmode PLS_INTEGER DEFAULT 0) > RETURN SELF AS RESULT IS > BEGIN > SELF.dtype := 3; > SELF.bmode := bmode; > SELF.sz := 0; > SELF.tm_val := tm_val; > RETURN; > END; > > CONSTRUCTOR FUNCTION aq$_bnd(urowid_val VARCHAR2, bmode PLS_INTEGER DEFAULT 0) > RETURN SELF AS RESULT IS > BEGIN > SELF.dtype := 4; > SELF.bmode := bmode; > SELF.sz := 0; > SELF.str_val := urowid_val; > RETURN; > END; > > END; >
248a249
> MAXVC NUMBER,
253,256c254,258
< TYPESTR VARCHAR(4000);
< VCNAME VARCHAR2(130);
< VNM VARCHAR2(130);
< DM VARCHAR2(130);
---
> TYPESTR VARCHAR2(4000);
> VCNAME VARCHAR2(130);
> VNM VARCHAR2(130);
> DM VARCHAR2(130);
> LEN NUMBER;
274,275c276,284
< ELSIF (COLOBJ.GET_STRING('type') = 'string' OR
< COLOBJ.GET_STRING('type') = 'boolean' OR
---
> ELSIF (COLOBJ.GET_STRING('type') = 'string') THEN
>
> LEN := COLOBJ.GET_NUMBER('o:length');
> IF (LEN <= MAXVC) THEN
> TYPESTR := ' varchar2('|| LEN ||') path ';
> ELSE
> TYPESTR := ' clob path ';
> END IF;
> ELSIF (COLOBJ.GET_STRING('type') = 'boolean' OR
370a380
> MAXVC NUMBER,
434c444
< BUILDJCOLS(TEMPOBJ, PATH, FIRST, JDDL, ERRST, RCLST, COLCNT);
---
> BUILDJCOLS(TEMPOBJ, PATH, FIRST, JDDL, MAXVC, ERRST, RCLST, COLCNT);
458c468
< ERRST, RCLST, COLCNT);
---
> MAXVC, ERRST, RCLST, COLCNT);
470c480
< ERRST, RCLST, COLCNT);
---
> MAXVC, ERRST, RCLST, COLCNT);
481,482c491,492
< BUILDCOLUMN(ITEMSOBJ, '$[*]', FIRSTINNESTED, JDDL, ERRST, RCLST,
< COLCNT);
---
> BUILDCOLUMN(ITEMSOBJ, '$[*]', FIRSTINNESTED, JDDL, MAXVC,
> ERRST, RCLST, COLCNT);
492c502,503
< BUILDJCOLS(PROPSOBJ, '$', FIRSTINNESTED, JDDL, ERRST, RCLST, COLCNT);
---
> BUILDJCOLS(PROPSOBJ, '$', FIRSTINNESTED, JDDL, MAXVC,
> ERRST, RCLST, COLCNT);
508c519
< ERRST, RCLST, COLCNT);
---
> MAXVC, ERRST, RCLST, COLCNT);
537a549
> MAXVC NUMBER;
543a556
> MAXVC := SYS.DBMS_JSON0.GETMAXVCSIZE();
550c563
< BUILDJCOLS(PROPS, '$', FIRSTJCOL, JSNDDL, ERRST, RCSTK, COLCNT);
---
> BUILDJCOLS(PROPS, '$', FIRSTJCOL, JSNDDL, MAXVC, ERRST, RCSTK, COLCNT);
116,126c116,133
< FOR I IN 1..V_ID_LENGTH LOOP
< V_ID_CHAR := SUBSTR(P_URI_NAME,I,1);
< IF (V_ID_CHAR = '"') THEN
< V_ID_CHAR := '_';
< ELSIF (INSTR(CONTROL_CHARS, V_ID_CHAR) > 0) THEN
< V_ID_CHAR := '_';
< ELSIF (INSTR('abcdefghijklmnopqrstuvwxyz', V_ID_CHAR) > 0) THEN
< V_HAS_LOWER := TRUE;
< ELSIF (INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', V_ID_CHAR) > 0) THEN
< V_HAS_UPPER := TRUE;
< ELSIF (INSTR('0123456789_$#', V_ID_CHAR) <= 0) THEN
---
> BEGIN
> FOR I IN 1..V_ID_LENGTH LOOP
> V_ID_CHAR := SUBSTR(P_URI_NAME,I,1);
> IF (V_ID_CHAR = '"') THEN
> V_ID_CHAR := '_';
> ELSIF (INSTR(CONTROL_CHARS, V_ID_CHAR) > 0) THEN
> V_ID_CHAR := '_';
> ELSIF (INSTR('abcdefghijklmnopqrstuvwxyz', V_ID_CHAR) > 0) THEN
> V_HAS_LOWER := TRUE;
> ELSIF (INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', V_ID_CHAR) > 0) THEN
> V_HAS_UPPER := TRUE;
> ELSIF (INSTR('0123456789_$#', V_ID_CHAR) <= 0) THEN
> V_TO_UPPER := FALSE;
> END IF;
> P_TABLE_NAME := P_TABLE_NAME||V_ID_CHAR;
> END LOOP;
>
> IF ((V_HAS_UPPER) AND (V_HAS_LOWER)) THEN
129,142c136,147
< P_TABLE_NAME := P_TABLE_NAME||V_ID_CHAR;
< END LOOP;
<
< IF ((V_HAS_UPPER) AND (V_HAS_LOWER)) THEN
< V_TO_UPPER := FALSE;
< END IF;
<
< V_ID_CHAR := SUBSTR(P_TABLE_NAME,1,1);
< IF (V_TO_UPPER AND
< ((INSTR('abcdefghijklmnopqrstuvwxyz', V_ID_CHAR) > 0) OR
< (INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', V_ID_CHAR) > 0))) THEN
< P_TABLE_NAME := UPPER(P_TABLE_NAME);
< END IF;
<
---
>
> V_ID_CHAR := SUBSTR(P_TABLE_NAME,1,1);
> IF (V_TO_UPPER AND
> ((INSTR('abcdefghijklmnopqrstuvwxyz', V_ID_CHAR) > 0) OR
> (INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', V_ID_CHAR) > 0))) THEN
> P_TABLE_NAME := UPPER(P_TABLE_NAME);
> END IF;
>
> EXCEPTION WHEN OTHERS THEN
>
> SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40674,'table or column name',128);
> END;
703c708
< (P_KEY_ASSIGNMENT_METHOD <> 'MONGO')) THEN
---
> (P_KEY_ASSIGNMENT_METHOD <> 'OID')) THEN
707c712
< 'UUID, MONGO');
---
> 'UUID, OID');
719c724
< ELSIF ((P_KEY_ASSIGNMENT_METHOD = 'MONGO') AND
---
> ELSIF ((P_KEY_ASSIGNMENT_METHOD = 'OID') AND
1311c1316
< SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40646, V_CONTENT_COLUMN_TYPE);
---
> SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40646, V_CONTENT_COLUMN_TYPE);
1318c1323
< SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40646, V_CONTENT_COLUMN_TYPE);
---
> SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40646, V_CONTENT_COLUMN_TYPE);
1325c1330
< SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40646, V_CONTENT_COLUMN_TYPE);
---
> SYS.DBMS_SODA_UTIL.RAISE_SYSTEM_ERROR(-40646, V_CONTENT_COLUMN_TYPE);
1351,1352c1356,1357
< ELSIF (UPPER(V_KEY_ASSIGNMENT_METHOD) = 'MONGO') THEN
< V_KEY_ASSIGNMENT_METHOD := 'MONGO';
---
> ELSIF (UPPER(V_KEY_ASSIGNMENT_METHOD) = 'OID') THEN
> V_KEY_ASSIGNMENT_METHOD := 'OID';
1524c1529
< (V_KEY_ASSIGNMENT_METHOD IN ('EXTRACT','INSERT','MONGO'))) THEN
---
> (V_KEY_ASSIGNMENT_METHOD IN ('EXTRACT','INSERT','OID'))) THEN
Useful Links:
- Download Assistant: MOS Note: 2118136.2
- 2020 January CPU: https://www.oracle.com/security-alerts/cpujan2020.html




