MINI MINI MANI MO
Rem
Rem $Header: rdbms/admin/catxidx.sql /main/46 2015/08/19 11:54:51 raeburns Exp $
Rem
Rem catxidx.sql
Rem
Rem Copyright (c) 2004, 2015, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem catxidx.sql - XMLIndex related schema objects
Rem
Rem DESCRIPTION
Rem This script creates the views, packages, index types, operators and
Rem indexes required for supporting the XMLIndex
Rem
Rem NOTES
Rem This script should be run as "XDB".
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catxidx.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catxidx.sql
Rem SQL_PHASE: CATXIDX
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catqm_int.sql
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem raeburns 06/04/15 - Bug 21322727: Use FORCE for types with only type dependents
Rem raeburns 07/03/14 - add library creation (for xdbrelod restructure)
Rem surman 01/23/14 - 13922626: Update SQL metadata
Rem srtata 01/21/14 - proj 47295: add DML callouts with OID
Rem qyu 03/18/13 - Common start and end scripts
Rem srtata 12/04/12 - bug 15858259: do alterindextype
Rem srtata 10/05/12 - bug 13439639: implement ODCIIndexUpdPartMetadata
Rem sipatel 09/05/11 - add dxptab(nbpendtabobj#, nberrtabobj#)
Rem sipatel 09/05/11 - #(11883969) - add xidx_part_tab and
Rem dxptab(tablespace, table_attrs)
Rem traney 04/05/11 - 35209: long identifiers dictionary upgrade
Rem attran 01/31/11 - 11697039 & 11699333: IndexMedata
Rem thbaby 05/11/10 - remove PREDICATE xmlindex related attrs from
Rem XMLIndexLoad_t
Rem bhammers 04/22/10 - support buffer > 32k at export time
Rem thbaby 03/01/10 - add grppos column to xdb.xdb$xidx_imp_t
Rem attran 31/01/10 - global temp imp_t
Rem spetride 05/04/09 - add ODCIIndexUtil{GetTableNames|Cleanup}
Rem bhammers 10/23/08 - call qmix_xmetadata only if in datapump mode
Rem bhammers 04/22/08 - renamed col in XDB.XDB$XIDX_IMP_T
Rem attran 06/01/08 - 7140541: xmlindex_noop
Rem attran 04/15/08 - list partitioned XIX
Rem bhammers 03/11/08 - import/export datapump
Rem bhammers 11/14/07 - modified table XDB.XDB$XIDX_IMP_T
Rem hxzhang 11/14/07 - Index Unification Project
Rem attran 09/24/07 - ODCIStatsUpdPartStatistics
Rem attran 08/24/07 - table function for single INSERT
Rem atabar 07/11/07 - Add predicate entries to XDB.XMLIndexLoad_t
Rem ningzhan 04/12/07 - increase snapshot size in DXPTAB to 20
Rem attran 06/03/07 - 5925800: Got rid of XMLTM_LIB/XMLTM_FUNCIMPL
Rem attran 11/01/07 - Bug 5765339 / ExImport
Rem attran 11/06/06 - Exception handling during upgrade
Rem attran 08/27/06 - Exchange Partition
Rem thbaby 08/12/06 - rename pathsdoc column to parameters
Rem attran 06/30/06 - Bug 5280799 / AMD64
Rem thbaby 06/16/06 - make stats type also system-managed
Rem thbaby 06/13/06 - move drop indextype to up/down scripts
Rem ataracha 06/07/06 - add support for export/import
Rem attran 06/05/06 - Sys-Managed Partitioning
Rem thbaby 05/24/06 - remove obsolete xmlindex operators
Rem ataracha 05/16/06 - comment out system-managed part.
Rem attran 04/30/06 - System Managed Partitioning
Rem thbaby 04/26/06 - remove 'without column data'
Rem thbaby 04/25/06 - xmlindex without column data
Rem thbaby 12/21/05 - remove repeat interval from dictionary
Rem thbaby 12/15/05 - add new xdb$dxptab columns for async idx
Rem attran 11/30/05 - XMLIndexLoad_t TableFunction: Remove the LOB
Rem ataracha 01/05/06 - rm xdb$dxpath, xdb$dxptab-add pathsdoc
Rem attran 03/08/05 - Execute Privilege to the LOAD func
Rem sichandr 03/03/05 - pipelined table func implementation
Rem attran 03/01/05 - Load into VALUE LOBs
Rem attran 11/08/04 - STATISTICS
Rem smukkama 09/27/04 - move xmlidx token plsql stuff from catxdbtm.sql
Rem attran 10/31/04 - Security: obsolete operators.
Rem attran 09/17/04 - Security: grant to public
Rem attran 08/20/04 - Up/Down/grade
Rem sichandr 08/26/04 - Add isnode function
Rem athusoo 07/30/04 - Add hastext function
Rem athusoo 07/20/04 - use VARCHAR2 for value
Rem sichandr 07/18/04 - Load into CLOB
Rem athusoo 07/08/04 - Add isattr function
Rem sichandr 06/18/04 - add pull table function
Rem athusoo 06/03/04 - Add support for xmlindex_parent operator
Rem sichandr 04/08/04 - add xmlindex_depth
Rem athusoo 03/30/04 - Add maxchild function
Rem athusoo 03/18/04 - Add pathstr parameter to IndexStart
Rem athusoo 03/16/04 - Convert to xmlindex_getnodes operator
Rem attran 02/17/04 - Created
@@?/rdbms/admin/sqlsessstart.sql
/*-----------------------------------------------------------------------*/
/* LIBRARY */
/*-----------------------------------------------------------------------*/
create or replace library XDB.XMLIndex_lib trusted as static;
/
declare
errno number;
begin
execute immediate
'disassociate statistics from indextypes XDB.XMLINDEX';
EXCEPTION
when others then errno := 1;-- ignore all errors !
end;
/
SHOW ERRORS;
declare
errno number;
begin
execute immediate
'disassociate statistics from packages XDB.XMLIndex_funcimpl';
EXCEPTION
when others then errno := 1;-- ignore all errors !
end;
/
SHOW ERRORS;
declare
exist number;
begin
select count(*) into exist from DBA_TABLES where table_name = 'XDB$DXPTAB'
and owner = 'XDB';
if exist = 0 then
execute immediate
'create table xdb.xdb$dxptab (
idxobj# number, -- object # of XMLIndex
pathtabobj# number not null, -- object # of PATH TABLE
flags number, -- 0x01 INCLUDED vs EXCLUDED
rawsize number, -- size of RAW value
parameters XMLType, -- PS: xml to store paths preferences,
-- scheduler job information
pendtabobj# number, -- object # of pending table
snapshot raw(20), -- SCN and flashback timestamp of path table
-- as of last successful sync
constraint xdb$dxptabpk primary key (idxobj#)) xmltype column parameters store as CLOB';
execute immediate
'create unique index xdb.xdb$idxptab on xdb.xdb$dxptab(pathtabobj#)';
-- default tablespace for xidx tables
execute immediate
'alter table xdb.xdb$dxptab add (tablespace varchar2(128))';
-- default physical attrs for xidx tables
execute immediate
'alter table xdb.xdb$dxptab add (table_attrs varchar2(4000))';
-- nonblocking AIX pending table obj#
execute immediate
'alter table xdb.xdb$dxptab add (nbpendtabobj# number)';
-- nonblokcing AIX error table obj#
execute immediate
'alter table xdb.xdb$dxptab add (nberrtabobj# number)';
end if;
select count(*) into exist from DBA_TABLES
where table_name = 'XDB$XIDX_PART_TAB'
and owner = 'XDB';
if exist = 0 then
execute immediate
'create table xdb.xdb$xidx_part_tab(
idxobj# number not null, -- object # of XMLIndex
part_name varchar2(128) not null,-- partition name
tablespace varchar2(128), -- partition tablespace
partition_attrs varchar2(4000), -- partition physical attributes
constraint xdb$xidx_part_tab_pk primary key (idxobj#, part_name))';
end if;
select count(*) into exist from DBA_TABLES
where table_name = 'XDB$XIDX_IMP_T'
and owner = 'XDB';
if exist = 0 then
execute immediate
'create global temporary table XDB.XDB$XIDX_IMP_T
(index_name VARCHAR2(138), /* M_IDEN + 10 ? */
schema_name VARCHAR2(138),
id VARCHAR2(40),
data CLOB,
grppos NUMBER )
on commit preserve rows';
-- explanation of the columns:
-- id: identifies the type of the entry,
-- e.g. PATHS, STRUCT_IDXGRP, STRUCT_SECIDX, etc
-- data: the data of the entry, e.g. the parameter clause
-- These privileges are ok because the table contents
-- are private and isolated during the session.
execute immediate
'grant insert, select, delete on XDB.XDB$XIDX_IMP_T to public';
end if;
select count(*) into exist from DBA_TABLES
where table_name = 'XDB$XIDX_PARAM_T'
and owner = 'XDB';
if exist = 0 then
execute immediate
'create table XDB.XDB$XIDX_PARAM_T
(userid number,
param_name VARCHAR2(128),
paramstr CLOB)';
execute immediate
'create unique index xdb.xdb$idxparam on xdb.xdb$xidx_param_t(userid,param_name)';
end if;
end;
/
SHOW ERRORS;
select * from XDB.XDB$XIDX_PARAM_T;
select * from XDB.XDB$XIDX_IMP_T;
select count(*) from xdb.xdb$dxptab;
-------------------------------------------------------------------
-- Create package used by ODCIIndexGetMetadata
-------------------------------------------------------------------
CREATE OR REPLACE PACKAGE XDB.ximetadata_pkg AS
FUNCTION getIndexMetadata (idxinfo IN sys.ODCIIndexInfo,
expver IN VARCHAR2,
newblock OUT number,
idxenv IN sys.ODCIEnv) return VARCHAR2;
FUNCTION getIndexMetadataCallback (idxinfo IN sys.ODCIIndexInfo,
expver IN VARCHAR2,
newblock OUT number,
idxenv IN sys.ODCIEnv) return CLOB;
FUNCTION utlgettablenames(idxinfo IN sys.ODCIIndexInfo) return BOOLEAN;
END ximetadata_pkg;
/
SHOW ERRORS;
CREATE OR REPLACE PACKAGE BODY XDB.ximetadata_pkg AS
iterate NUMBER := 0; -- counts the calls
data CLOB := NULL; -- buffer storage
offset NUMBER := 1;
done NUMBER := 0;
FUNCTION getIndexMetadata (idxinfo IN sys.ODCIIndexInfo,
expver IN VARCHAR2,
newblock OUT number,
idxenv IN sys.ODCIEnv) return VARCHAR2 IS
current_plsql VARCHAR2(32000);
pos NUMBER := 0;
BEGIN
newblock := 0;
IF (done = 1) THEN
iterate := 0; -- reset
done := 0; -- reset
offset := 1;
RETURN '';
END IF;
IF (sys.dbms_datapump.datapump_job) THEN
IF (iterate = 0) THEN -- first call: get data from c callback once
data := getIndexMetadataCallback (idxinfo, expver, newblock, idxenv);
IF (length(data) <= 30000) THEN
done := 1; -- short metadata can be returned in one shot
RETURN data;
END IF;
END IF;
-- we have long metadata
-- find the second occurence of 'insert into XDB.XDB'
pos := dbms_lob.instr(data, 'insert into', offset, 2);
IF (pos = 0) THEN -- not found
current_plsql := DBMS_LOB.SUBSTR(data, 30000, offset); -- the rest
done := 1;
ELSE
current_plsql:= DBMS_LOB.SUBSTR(data, pos - offset -1, offset);
offset := pos;
END IF;
iterate := iterate + 1;
return current_plsql;
END IF;
done := 1;
return '';
END getIndexMetadata;
function getIndexMetadataCallback (idxinfo IN sys.ODCIIndexInfo,
expver IN VARCHAR2,
newblock OUT number,
idxenv IN sys.ODCIEnv)
return CLOB
is language C name "QMIX_XMETADATA" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
expver, expver INDICATOR,
newblock,newblock INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCILobLocator);
FUNCTION utlgettablenames(idxinfo IN sys.ODCIIndexInfo) return BOOLEAN
is language C name "QMIX_TABLEUTILS" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
RETURN INDICATOR sb4,
return);
END ximetadata_pkg;
/
SHOW ERRORS;
create or replace public synonym ximetadata_pkg for XDB.ximetadata_pkg;
/
SHOW ERRORS;
/*-----------------------------------------------------------------------*/
/* TYPE IMPLEMENTATION */
/*-----------------------------------------------------------------------*/
create or replace type xdb.XMLIndexMethods FORCE
OID '10000000000000000000000000020118'
authid current_user as object
(
-- cursor set by IndexStart and used in IndexFetch
scanctx RAW(8),
-- DCLs
static function ODCIGetInterfaces (ilist OUT sys.ODCIObjectList)
return NUMBER,
-- DDLs
static function ODCIIndexCreate (idxinfo sys.ODCIIndexInfo,
idxparms VARCHAR2,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_CREATE" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
idxparms,idxparms INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexDrop (idxinfo sys.ODCIIndexInfo,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_DROP" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexAlter (idxinfo sys.ODCIIndexInfo,
idxparms IN OUT VARCHAR2,
opt NUMBER,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_ALTER" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
idxparms,idxparms INDICATOR,
opt, opt INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexTruncate (idxinfo sys.ODCIIndexInfo,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_TRUNC" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
--- DMLs ---
static function ODCIIndexInsert (idxinfo sys.ODCIIndexInfo,
rid VARCHAR2,
doc sys.xmltype,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_INSERT" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
rid, rid INDICATOR,
doc, doc INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexInsert (idxinfo sys.ODCIIndexInfo,
rid VARCHAR2,
doc sys.xmltype,
idxenv sys.ODCIEnv,
oid VARCHAR2)
return NUMBER
is language C name "QMIX_INSERT2" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
rid, rid INDICATOR,
doc, doc INDICATOR,
idxenv, idxenv INDICATOR struct,
oid, oid INDICATOR,
RETURN OCINumber),
static function ODCIIndexDelete (idxinfo sys.ODCIIndexInfo,
rid VARCHAR2,
doc sys.xmltype,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_DELETE" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
rid, rid INDICATOR,
doc, doc INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexDelete (idxinfo sys.ODCIIndexInfo,
rid VARCHAR2,
doc sys.xmltype,
idxenv sys.ODCIEnv,
oid VARCHAR2)
return NUMBER
is language C name "QMIX_DELETE2" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
rid, rid INDICATOR,
doc, doc INDICATOR,
idxenv, idxenv INDICATOR struct,
oid, oid INDICATOR,
RETURN OCINumber),
static function ODCIIndexUpdate (idxinfo sys.ODCIIndexInfo,
rid VARCHAR2,
olddoc sys.xmltype,
newdoc sys.xmltype,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_UPDATE" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
rid, rid INDICATOR,
olddoc, olddoc INDICATOR,
newdoc, newdoc INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexUpdate (idxinfo sys.ODCIIndexInfo,
rid VARCHAR2,
olddoc sys.xmltype,
newdoc sys.xmltype,
idxenv sys.ODCIEnv,
oid VARCHAR2)
return NUMBER
is language C name "QMIX_UPDATE2" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
rid, rid INDICATOR,
olddoc, olddoc INDICATOR,
newdoc, newdoc INDICATOR,
idxenv, idxenv INDICATOR struct,
oid, oid INDICATOR,
RETURN OCINumber),
--- Query ---
static function ODCIIndexStart (ictx IN OUT XMLIndexMethods,
idxinfo sys.ODCIIndexInfo,
opi sys.ODCIPredInfo,
oqi sys.ODCIQueryInfo,
strt NUMBER,
stop NUMBER,
pathstr varchar2,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_START" library XDB.XMLINDEX_LIB
with context
parameters (
context,
ictx, ictx INDICATOR struct,
idxinfo, idxinfo INDICATOR struct,
opi, opi INDICATOR struct,
oqi, oqi INDICATOR struct,
strt, strt INDICATOR,
stop, stop INDICATOR,
pathstr, pathstr LENGTH,
idxenv, idxenv INDICATOR struct,
return OCINumber),
member function ODCIIndexFetch (nrows NUMBER,
rids OUT sys.ODCIRidList,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_FETCH" library XDB.XMLINDEX_LIB
with context
parameters (
context,
self, self INDICATOR struct,
nrows, nrows INDICATOR,
rids, rids INDICATOR,
idxenv, idxenv INDICATOR struct,
return OCINumber),
member function ODCIIndexClose (idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_CLOSE" LIBRARY XDB.XMLINDEX_LIB
with context parameters (
context,
self, self INDICATOR struct,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIIndexExchangePartition (idxPinfo sys.ODCIIndexInfo,
idxTinfo sys.ODCIIndexInfo,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_EXCHANGE" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxPinfo, idxPinfo INDICATOR struct,
idxTinfo, idxTinfo INDICATOR struct,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber),
static function ODCIIndexUpdPartMetadata(ixdxinfo sys.ODCIIndexInfo,
palist sys.ODCIPartInfoList,
idxenv sys.ODCIEnv)
return NUMBER,
--- MOVE / TRANSPORTABLE TBS / IM/EXPORT ---
static function ODCIIndexGetMetadata(idxinfo IN sys.ODCIIndexInfo,
expver IN VARCHAR2,
newblock OUT number,
idxenv IN sys.ODCIEnv)
return VARCHAR2,
-- path table and secondary indexes on it are already exported in schema-mode
-- this routine should only expose them for Transportable Tablespaces,
-- via DataPump
static FUNCTION ODCIIndexUtilGetTableNames(ia IN sys.ODCIIndexInfo,
read_only IN PLS_INTEGER,
version IN varchar2,
context OUT PLS_INTEGER)
RETURN BOOLEAN,
/*
static function ODCIIndexUtilGetTableNames(idxinfo IN sys.ODCIIndexInfo,
read_only IN PLS_INTEGER,
version IN varchar2,
ctx OUT PLS_INTEGER)
return BOOLEAN
is language C name "QMIX_GETTABNAMES" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
read_only,read_only INDICATOR,
version, version INDICATOR,
ctx, ctx INDICATOR,
RETURN INDICATOR sb4),
*/
static PROCEDURE ODCIIndexUtilCleanup (context IN PLS_INTEGER)
);
/
show errors;
create or replace type body xdb.XMLIndexMethods
is
static function ODCIGetInterfaces(ilist OUT sys.ODCIObjectList)
return number is
begin
ilist := sys.ODCIObjectList(sys.ODCIObject('SYS','ODCIINDEX2'));
return ODCICONST.SUCCESS;
end ODCIGetInterfaces;
static function ODCIIndexUpdPartMetadata(ixdxinfo sys.ODCIIndexInfo,
palist sys.ODCIPartInfoList,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_UPD_PARTMETA" library XDB.XMLINDEX_LIB
with context
parameters (
context,
ixdxinfo, ixdxinfo INDICATOR struct,
palist, palist INDICATOR,
idxenv, idxenv INDICATOR struct,
RETURN OCINumber);
static function ODCIIndexGetMetadata(idxinfo IN sys.ODCIIndexInfo,
expver IN VARCHAR2,
newblock OUT number,
idxenv IN sys.ODCIEnv)
return VARCHAR2
is
begin
return XDB.ximetadata_pkg.getIndexMetadata(idxinfo, expver, newblock, idxenv);
end ODCIIndexGetMetadata;
-- path table and secondary indexes on it are already exported in schema-mode
-- this routine should only expose them for Transportable Tablespaces,
-- via DataPump
static function ODCIIndexUtilGetTableNames(ia IN sys.ODCIIndexInfo,
read_only IN PLS_INTEGER,
version IN varchar2,
context OUT PLS_INTEGER)
return BOOLEAN
is
begin
return XDB.ximetadata_pkg.utlgettablenames(ia);
end ODCIIndexUtilGetTableNames;
static procedure ODCIIndexUtilCleanup (context PLS_INTEGER)
is
begin
-- dummy routine
return;
end ODCIIndexUtilCleanup;
end;
/
show errors;
create or replace type xdb.XMLIdxStatsMethods
OID '20000000000000000000000000023456'
authid current_user as object
(
-- user-defined function cost and selectivity functions
cost number,
-- DCLs
static function ODCIGetInterfaces (ilist OUT sys.ODCIObjectList)
return NUMBER,
--- STATISTICs ---
static function ODCIStatsTableFunction(funcInfo IN sys.ODCIFuncInfo,
tfStats OUT sys.ODCITabFuncStats,
args IN sys.ODCIArgDescList)
return NUMBER
is language C name "QMIX_TABFUN_STATS" library XDB.XMLINDEX_LIB
with context
parameters (
context,
funcInfo, funcInfo INDICATOR struct,
tfStats, tfStats INDICATOR struct,
args, args INDICATOR,
return OCINumber),
static function ODCIStatsCollect(colinfo sys.ODCIColInfo,
options sys.ODCIStatsOptions,
stats OUT RAW,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_COL_STATS" LIBRARY XDB.XMLINDEX_LIB
with context parameters (
context,
colinfo, colinfo INDICATOR struct,
options, options INDICATOR struct,
stats, stats INDICATOR, stats LENGTH,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsCollect(idxinfo sys.ODCIIndexInfo,
options sys.ODCIStatsOptions,
stats OUT RAW,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_IDX_STATS" LIBRARY XDB.XMLINDEX_LIB
with context parameters (
context,
idxinfo, idxinfo INDICATOR struct,
options, options INDICATOR struct,
stats, stats INDICATOR, stats LENGTH,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsDelete(colinfo sys.ODCIColInfo,
statistics OUT RAW,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_DEL_COLSTATS" LIBRARY XDB.XMLINDEX_LIB
with context parameters (
context,
colinfo, colinfo INDICATOR struct,
statistics, statistics INDICATOR, statistics LENGTH,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsDelete(idxinfo sys.ODCIIndexInfo,
statistics OUT RAW,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_DEL_IDXSTATS" LIBRARY XDB.XMLINDEX_LIB
with context parameters (
context,
idxinfo, idxinfo INDICATOR struct,
statistics, statistics INDICATOR, statistics LENGTH,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsSelectivity(predinfo sys.ODCIPredInfo,
sel OUT number,
args sys.ODCIArgDescList,
strt number,
stop number,
expr VARCHAR2,
datai VARCHAR2,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_SELECTIVITY" library XDB.XMLINDEX_LIB
with context
parameters (
context,
predinfo,predinfo INDICATOR struct,
sel, sel INDICATOR,
args, args INDICATOR,
strt, strt INDICATOR,
stop, stop INDICATOR,
expr, expr INDICATOR,
datai, datai INDICATOR,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsFunctionCost(funcinfo sys.ODCIFuncInfo,
cost OUT sys.ODCICost,
args sys.ODCIArgDescList,
expr VARCHAR2,
datai VARCHAR2,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_FUN_COST" library XDB.XMLINDEX_LIB
with context
parameters (
context,
funcinfo,funcinfo INDICATOR struct,
cost, cost INDICATOR struct,
args, args INDICATOR,
expr, expr INDICATOR,
datai, datai INDICATOR,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsIndexCost(idxinfo sys.ODCIIndexInfo,
sel number,
cost OUT sys.ODCICost,
qi sys.ODCIQueryInfo,
pred sys.ODCIPredInfo,
args sys.ODCIArgDescList,
strt number,
stop number,
datai varchar2,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_IDX_COST" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
sel, sel INDICATOR,
cost, cost INDICATOR struct,
qi, qi INDICATOR struct,
pred, pred INDICATOR struct,
args, args INDICATOR,
strt, strt INDICATOR,
stop, stop INDICATOR,
datai, datai INDICATOR,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsExchangePartition(idxinfo sys.ODCIIndexInfo,
tabinfo sys.ODCIIndexInfo,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_EXCHANGE_STATS" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
tabinfo, tabinfo INDICATOR struct,
idxenv, idxenv INDICATOR struct,
return OCINumber),
static function ODCIStatsUpdPartStatistics(idxinfo sys.ODCIIndexInfo,
palist sys.ODCIPartInfoList,
idxenv sys.ODCIEnv)
return NUMBER
is language C name "QMIX_UPD_PARTSTATS" library XDB.XMLINDEX_LIB
with context
parameters (
context,
idxinfo, idxinfo INDICATOR struct,
palist, palist INDICATOR,
idxenv, idxenv INDICATOR struct,
return OCINumber)
);
/
show errors;
create or replace type body xdb.XMLIdxStatsMethods
is
static function ODCIGetInterfaces(ilist OUT sys.ODCIObjectList)
return number is
begin
ilist := sys.ODCIObjectList(sys.ODCIObject('SYS','ODCISTATS2'));
return ODCICONST.SUCCESS;
end ODCIGetInterfaces;
end;
/
show errors;
/*------------------------------------------------------------------------*/
/* TABLE FUNCTIONs */
/* - XMLIndexLoad to parallellize the source cursor. */
/*------------------------------------------------------------------------*/
drop function XDB.XMLIndexInsFunc;
drop function XDB.XMLIndexLoadFunc;
drop type XDB.XMLIndexLoad_Imp_t force;
drop type XDB.XMLIndexTab_t;
drop type XDB.XMLIndexLoad_t force;
create or replace type XDB.XMLIndexLoad_t as object
(
RID VARCHAR2(18),
PID RAW(8),
OK RAW(1000),
LOC RAW(2000),
VALUE VARCHAR2(4000)
)
/
create or replace type XDB.XMLIndexTab_t as TABLE of XDB.XMLIndexLoad_t
/
create or replace type XDB.XMLIndexLoad_Imp_t
authid current_user as object
(
key RAW(8),
static function ODCITableStart(sctx IN OUT XDB.XMLIndexLoad_Imp_t)
return PLS_INTEGER
is language C name "QMIX_INSSTART" library XDB.XMLINDEX_LIB
with context
parameters (
context,
sctx, sctx INDICATOR STRUCT,
return INT
),
static function ODCITableStart(sctx IN OUT XDB.XMLIndexLoad_Imp_t,
load_cursor SYS_REFCURSOR,
flags IN Number)
return PLS_INTEGER
is language C name "QMIX_LOADSTART" library XDB.XMLINDEX_LIB
with context
parameters (
context,
sctx, sctx INDICATOR STRUCT,
load_cursor, load_cursor INDICATOR,
flags,
return INT
),
member function ODCITableFetch(self IN OUT XDB.XMLIndexLoad_Imp_t,
nrows IN Number,
xmlrws OUT XDB.XMLIndexTab_t)
return PLS_INTEGER
as language C name "QMIX_LOADFETCH" library XDB.XMLINDEX_LIB
with context
parameters (
context,
self, self INDICATOR STRUCT,
nrows,
xmlrws OCIColl, xmlrws INDICATOR sb2, xmlrws DURATION OCIDuration,
return INT
),
member function ODCITableClose(self IN XDB.XMLIndexLoad_Imp_t)
return PLS_INTEGER
as language C name "QMIX_LOADCLOSE" library XDB.XMLINDEX_LIB
with context
parameters (
context,
self, self INDICATOR STRUCT,
return INT
)
);
/
show errors;
create or replace function XDB.XMLIndexLoadFunc(p IN SYS_REFCURSOR,
flags NUMBER)
return XDB.XMLIndexTab_t
authid current_user
parallel_enable (partition p by ANY)
pipelined using XDB.XMLIndexLoad_Imp_t;
/
show errors;
grant execute on XDB.XMLIndexLoadFunc to public;
create or replace function XDB.XMLIndexInsFunc
return XDB.XMLIndexTab_t
authid current_user
pipelined using XDB.XMLIndexLoad_Imp_t;
/
show errors;
grant execute on XDB.XMLIndexInsFunc to public;
/*------------------------------------------------------------------------*/
/* INDEXTYPE */
/*------------------------------------------------------------------------*/
create or replace package XDB.XMLIndex_FUNCIMPL authid current_user is
function xmlindex_noop(res sys.xmltype,
pathstr varchar2,
ia sys.odciindexctx,
sctx IN OUT XDB.XMLIndexMethods,
sflg number)
return number;
end XMLIndex_FUNCIMPL;
/
show errors;
create or replace package body XDB.XMLIndex_FUNCIMPL as
function xmlindex_noop(res sys.xmltype,
pathstr varchar2,
ia sys.odciindexctx,
sctx IN OUT XDB.XMLIndexMethods,
sflg number)
return number is
begin
return 0;
end;
end;
/
show errors;
create or replace operator XDB.xmlindex_noop binding
(sys.xmltype, varchar2) return number with index context,
scan context XDB.XMLIndexMethods
without column data using XDB.XMLIndex_FUNCIMPL.xmlindex_noop;
show errors;
grant execute on XDB.xmlindex_noop to public;
create or replace indextype XDB.XMLIndex for
XDB.xmlindex_noop(sys.xmltype, varchar2)
using XDB.XMLIndexMethods
with local partition
with system managed storage tables;
-- without column data;
-- with array dml (sys.xmltype, varray_xmltype)
show errors;
--bug 15858259 : do "alter indextype" so as to update indtypes$ with
-- latest implementation obj# ( latest obj# of XMLINDEXMETHODS)
alter indextype xdb.xmlindex using xdb.xmlindexmethods with local partition with system managed storage tables;
grant execute on XDB.XMLIndex to public;
associate statistics with indextypes XDB.XMLIndex using XDB.XMLIdxStatsMethods
with system managed storage tables;
associate statistics with packages XDB.XMLIndex_funcimpl using XDB.XMLIdxStatsMethods;
/************ Path suffix table function *********************/
-- create trusted library
CREATE OR REPLACE LIBRARY XDB.XMLTM_LIB TRUSTED AS STATIC;
/
show errors
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO