MINI MINI MANI MO
rem
rem Copyright (c) 2002, 2018, Oracle and/or its affiliates.
rem All rights reserved.
rem NAME
rem drixmd.pkh - DR Internal indeX MetaData access
rem
rem DESCRIPTION
rem functions for querying and setting index meta-data
rem
rem
rem BEGIN SQL_FILE_METADATA
rem SQL_SOURCE_FILE: ctx_src_2/src/dr/admin/drixmd.pkh
rem SQL_SHIPPED_FILE: ctx/admin/drixmd.pkh
rem SQL_PHASE: DRIXMD_PKH
rem SQL_STARTUP_MODE: NORMAL
rem SQL_IGNORABLE_ERRORS: NONE
rem SQL_CALLING_FILE: ctx/admin/ctxpkh.sql
rem END SQL_FILE_METADATA
rem
rem MODIFIED (MM/DD/YY)
rem ccwei 10/17/17 - Bug 17886306: Add GetIndexTableName
rem pkosaraj 09/28/17 - Bug 25929650: move driimp index metadata ops
rem rodfuent 09/12/17 - Bug 26614837: Place V2 partitions in correct tbs
rem rodfuent 08/24/17 - Bug 26681232: GetAllPartitionNames return CLOB
rem rodfuent 08/24/17 - Bug 26614837: GetAllPartitionNames return CLOB
rem rkadwe 08/18/17 - Bug 25915271: CTX_OUTPUT invokers right
rem rkadwe 07/17/17 - Bug 26427675
rem boxia 06/14/17 - Bug 25950574: modify args in add_bg_optimize
rem demukhin 05/25/17 - bug 26051570: keep $R for legacy indexes
rem boxia 04/18/17 - Bug 25913209: enable trace for bg opt jobs
rem boxia 03/17/17 - Bug 25468759: PARALLEL for CIX/AIX OPTIMIZE
rem rkadwe 02/24/17 - Bug 25370368: Qualify objects
rem rodfuent 02/06/17 - Bug 25422217: $DI,$NI,$KI,$UI clause for ctx_v2
rem boxia 01/18/17 - Proj 68638: add background opimize procedures
rem boxia 01/17/17 - Bug 25390928: add opt_type, opt_interval to
rem partition
rem demukhin 01/17/17 - prj 68638: remove $R
rem snetrava 12/27/16 - Added STO_KGI
rem boxia 11/19/16 - Bug 25172618: add STO_SIAO
rem rodfuent 11/03/16 - Bug 25028151: composite partitioning for ctx_v2
rem surman 12/10/15 - 22097228: Thirty character index objects
rem aczarlin 11/24/15 - bug 22218950
rem aczarlin 10/29/15 - bug 22092290 exchange part with gtab
rem shuroy 08/13/15 - Moved SMALL_R_ROW_MIN_COMP from dr0ddl.pkb
rem aczarlin 08/05/15 - bug 21562436 ctxagg parallel
rem hxzhang 07/17/15 - system managed partiton for CONTEXT_V2
rem ataracha 07/09/15 - Introduce I_TRANSIT_DEFAULT for non-SS syntax
rem rkadwe 05/15/15 - Alter index for simplified syntax
rem rkadwe 06/02/15 - Memory parameter datatype
rem shuroy 05/14/15 - Adding storage clause for $U
rem aczarlin 11/05/15 - bug 19579111, no max_rows if no gtab
rem surman 01/12/15 - 16905087: Add CheckIndexVisibile
rem surman 12/12/14 - Full length index names
rem boxia 08/14/14 - Bug 18795228, rename STO_SNIX to STO_SNI
rem yinlu 08/06/14 - IndexHasDataGuide
rem boxia 07/10/14 - sdata_altidx_dollars: add IndexHasSSortTable
rem rkadwe 02/28/13 - Range postings
rem surman 08/16/12 - 14038163: Add $W and $Y indexes
rem surman 06/12/12 - 14175174: Add SubstringEenabled
rem gauryada 05/23/12 - bug#13724080
rem yiqi 05/05/12 - add STO_SR
rem gauryada 03/21/12 - Partition specific stage_itab enhancements
rem rkadwe 11/15/11 - ATG Integration
rem thbaby 08/24/11 - add STO_E
rem thbaby 08/24/11 - add IndexHasETable
rem yiqi 07/27/11 - Bug 9048426
rem gauryada 04/29/11 - SAVE_COPY changes ($D addition)
rem gauryada 11/24/10 - $O table addition
rem rpalakod 05/26/10 - Bug 9354204
rem rpalakod 05/25/10 - Bug 9730483
rem rkadwe 04/15/10 - Activate Direct Path Loading
rem nenarkhe 12/17/09 - Bug 9141863
rem nenarkhe 10/19/09 - IndexHasMVDATA
rem nenarkhe 08/25/09 - F_TABLE_CLAUSE, A_TABLE_CLAUSE
rem nenarkhe 08/12/09 - MVDATA update
rem rkadwe 08/09/09 - zone_to_field
rem rpalakod 08/01/09 - autooptimize
rem nenarkhe 06/25/09 - $F
rem surman 06/02/09 - 8323978: Remove create_index_triggers
rem rpalakod 05/28/09 - bp 8452411
rem rpalakod 05/06/09 - Backport rpalakod_bug-8473813 from main
rem rpalakod 03/09/10 - optimize rearchitecture
rem rpalakod 02/08/10 - Bug 9357029
rem rpalakod 05/05/09 - Bug 8473813
rem nenarkhe 04/23/09 - remove UpdateMVDATA
rem rpalakod 04/23/09 - Bug 8452411
rem rpalakod 02/05/09 - nrtidx api
rem rpalakod 01/29/09 - rebuild without reindex
rem rpalakod 01/07/09 - separate_offsets
rem rpalakod 01/05/09 - Big IO API
rem surman 11/14/08 - 7540290: Use number instead of binary_integer
rem nenarkhe 09/11/08 - mvdata support
rem rpalakod 07/31/08 - Bug 7298172: change in behavior of idx_version
rem rpalakod 05/19/08 - Session Duration SQE
rem rpalakod 10/16/07 - CreatePolicy: EntityExtraction Flag
rem ymatsuda 09/06/07 - deferred $p table creation
rem surman 09/06/07 - 6139255: Change mode of p_idx_partition in
rem CreatePartitionMD
rem wclin 05/06/07 - add ChkIndexOption()
rem wclin 12/08/06 - clob SQE
rem wclin 12/29/06 - handle null update values
rem wclin 10/30/06 - add RenameIndexCol()
rem surman 06/06/06 - 5233309: smplsz to binary_integer in
rem GetIndexStats
rem wclin 02/11/06 - store docid in dr$sdata_update
rem yucheng 02/15/06 - add GetAllPartitionOPTs
rem yucheng 01/11/06 - recreate index online partition
rem wclin 12/14/05 - remove MakeIA
rem gkaminag 10/25/05 - sdata update
rem gkaminag 09/30/05 - cdi indexing
rem gkaminag 08/22/05 - recreate online
rem yucheng 07/22/05 - add a new PurgeKGL
rem yucheng 01/07/05 - add GetNextid
rem yucheng 11/03/04 - add GetMVFlag
rem yucheng 09/01/04 - CreatePolicy fix
rem gkaminag 12/10/03 - policy ddl security
rem gkaminag 11/24/03 - copy policy
rem wclin 10/16/03 - add IndexHasPendingRows()
rem surman 09/09/03 - 3101316: Add DropUser* procedures
rem yucheng 08/11/03 - local create index online support
rem yucheng 07/11/03 -
rem yucheng 07/02/03 - migrate to scheduler
rem wclin 06/19/03 - add OraConRewriteChk()
rem ehuang 05/27/03 - add CheckIndexForOraCon
rem yucheng 05/08/03 - DML enhancements
rem smuralid 05/12/03 - add STATE_POPULATE_K
rem wclin 05/09/03 - statement consistency support
rem yucheng 03/07/03 - remove tabpart_obj#
rem wclin 02/26/03 - modify GetIndexStats()
rem gkaminag 03/06/03 - allow users with alter any index to sync/optimize
rem smuralid 12/25/02 - CreatePolicy: eliminate 'roption' parameter
rem yucheng 11/20/02 - inter-partition parallelism
rem daliao 11/05/02 - add classifier in CreatePolicy
rem wclin 10/04/02 - get smplsz in GetIndexStats()
rem gkaminag 10/01/02 - security phase 3
rem gkaminag 09/24/02 - security phase 3
rem yucheng 07/12/02 - merge split poilcy
rem gkaminag 07/18/02 - security phase 2
rem gkaminag 07/12/02 - add option to bypass contains security check
rem gkaminag 07/02/02 - security overhaul phase 2
rem gkaminag 06/19/02 - gkaminag_security_ph1_020603
rem gkaminag 06/03/02 - creation
@@?/rdbms/admin/sqlsessstart.sql
create or replace package drixmd authid definer is
VERSION_LATEST constant number := 8130;
VERSION_CEILING constant number := 32000;
SMALL_R_ROW_MIN_COMP constant number := 122;
LONG_IDENT_MIN_COMP constant number := 122;
NO_R_MIN_COMP constant varchar2(30) := '12.2.0.2';
type ss_metadata is record (
json_enable varchar2(30),
dataguide varchar2(30),
search_on varchar2(30),
text varchar2(30)
);
/*---------------------------- SetActiveIndex ---------------------------*/
procedure SetActiveIndex(
p_idxid in number
);
/*---------------------------- CheckAccess ------------------------------*/
procedure CheckAccess(
p_invoker in number,
p_idxid in number
);
/*------------------------- CheckIndexQueryable -------------------------*/
/* call before attempting query operation on an index */
procedure CheckIndexQueryable(
p_idxid in number
);
/* ------------------------- CheckIndexVisibile --------------------------*/
/* 16905087: Raises an error if the index is invisible */
procedure CheckIndexVisible(
p_idxid in number
);
/*---------------------------- GetIndexMD -------------------------------*/
/* fetch selected dr$index column values into out variables */
procedure GetIndexMD(
p_idxid in number,
o_owner out varchar2,
o_owner# out number,
o_name out varchar2,
o_table_obj# out number,
o_table_dataobj# out number,
o_key_name out varchar2,
o_key_type out binary_integer,
o_text_name out varchar2,
o_text_type out binary_integer,
o_text_length out binary_integer,
o_lang_col out varchar2,
o_fmt_col out varchar2,
o_cset_col out varchar2,
o_idx_type out binary_integer,
o_idx_option out varchar2,
o_idx_sync_type out varchar2,
o_idx_sync_memory out number,
o_idx_src_name out varchar2,
o_idx_src_id out binary_integer,
o_idx_version out binary_integer,
o_config_col out varchar2
);
/*---------------------------- GetIndexID -------------------------------*/
/* get index id by name */
FUNCTION GetIndexID(
p_idx_name in varchar2
) return number;
/*---------------------------- FastGetIndexID ---------------------------*/
/* get index id by owner, name */
FUNCTION FastGetIndexID(
p_idx_owner in varchar2,
p_idx_name in varchar2
) return number;
/*--------------------------- GetIndexRec -------------------------------*/
/* get index meta data as a record */
POL_INDEX_ONLY constant number := 0;
POL_POLICY_ONLY constant number := 1;
POL_INDEX_OR_POLICY constant number := 2;
SEC_NONE constant number := 0;
SEC_CONTAINS constant number := 1;
SEC_OWNER constant number := 2;
SEC_ALTER constant number := 3;
SEC_DROP constant number := 4;
FUNCTION GetIndexRec(
p_idx_name in varchar2,
f_ispolicy in number default POL_INDEX_ONLY,
f_security in number default SEC_CONTAINS
) return dr_def.idx_rec;
/*--------------------------- ImportingIndex ----------------------------*/
/* return true if the index name is in import state */
/* note: pass in simple name. owner is implied -SESSIONID */
FUNCTION ImportingIndex(
p_idx_name in varchar2
) return boolean;
/*----------------------- GetIndexStorage -----------------------*/
/* get index storage clauses */
STO_I constant number := 1;
STO_R constant number := 2;
STO_K constant number := 3;
STO_N constant number := 4;
STO_P constant number := 5;
STO_X constant number := 6;
STO_RX constant number := 7;
STO_S constant number := 8;
STO_BI constant number := 9;
STO_SO constant number := 10;
STO_M constant number := 11;
STO_RT constant number := 12;
STO_G constant number := 13;
STO_H constant number := 14;
STO_A constant number := 15;
STO_F constant number := 16;
STO_FC constant number := 17;
STO_FI constant number := 18;
STO_O constant number := 19;
STO_Z constant number := 20;
STO_SC constant number := 21;
STO_D constant number := 22;
STO_SN constant number := 23;
STO_SNI constant number := 24;
STO_E constant number := 25;
STO_SITG constant number := 26;
STO_SR constant number := 27;
STO_W constant number := 28;
STO_Y constant number := 29;
STO_SV constant number := 30;
STO_SVI constant number := 31;
STO_SD constant number := 32;
STO_SDI constant number := 33;
STO_SRW constant number := 34;
STO_SRI constant number := 35;
STO_FP constant number := 36;
STO_SBF constant number := 37;
STO_SBFI constant number := 38;
STO_SBD constant number := 39;
STO_SBDI constant number := 40;
STO_ST constant number := 41;
STO_STI constant number := 42;
STO_STZ constant number := 43;
STO_STZI constant number := 44;
STO_SYM constant number := 45;
STO_SYMI constant number := 46;
STO_SDS constant number := 47;
STO_SDSI constant number := 48;
STO_XMLSC constant number := 49; /* xml_save_copy */
STO_XMLFI constant number := 50; /* xml_forward_enable */
STO_SB constant number := 51; /* single_byte */
STO_U constant number := 52; /* $U table clause */
STO_GPAR constant number := 53; /* gtab parallel */
STO_KG constant number :=54; /* $KG table clause */
STO_SIAO constant number := 55; /* stage_itab_auto_opt */
STO_KGI constant number :=56; /* $KG index clause */
STO_DI constant number := 57; /* $D index clause for context_v2 */
STO_NI constant number := 58; /* $N index clause for context_v2 */
STO_KI constant number := 59; /* $K index clause for context_v2 */
STO_UI constant number := 60; /* $U index clause for context_v2 */
STO_KD constant number := 61; -- $KD index clause
STO_KR constant number := 62; -- $KR index clause
PROCEDURE GetIndexStorage(
p_idxid in number,
p_ixpid in number,
o_clause in out dr_def.vc500_tab
);
/*------------------------- GetIndexRecByID -----------------------------*/
/* get index meta data as a record */
FUNCTION GetIndexRecByID(
p_idxid in number
) return dr_def.idx_rec;
/*---------------------------- GetPartitionRec ---------------------------*/
/* get partition meta data as a record */
FUNCTION GetPartitionRec(
p_ixp_name in varchar2,
p_idx in dr_def.idx_rec
) return dr_def.ixp_rec;
/*-------------------------- GetPartitionRecByID -------------------------*/
/* get partition meta data as a record */
FUNCTION GetPartitionRecByID(
p_ixpid in number,
p_idxid in number
) return dr_def.ixp_rec;
/*---------------------------- GetPartitionID ---------------------------*/
/* get partition ID */
FUNCTION GetPartitionID(
p_ixp_name in varchar2,
p_idxid in number
) return number;
/*---------------------------- GetAllPartitionInfo ---------------------------*/
/* get all partition ids and names */
procedure GetAllPartitionInfo(
p_idxid in number,
o_ids out nocopy dr_def.id_tab,
o_names out nocopy dr_def.vc30_tab
);
/*---------------------------- GetAllPartitions ---------------------------*/
/* get all partition metadata in a table */
PROCEDURE GetAllPartitions(
p_idxid in number,
p_idxtab# in number,
o_ixp in out nocopy dr_def.ixp_tab
);
/*---------------------------- GetIndexPartition -----------------------*/
/* get dr$index_partition information */
procedure GetIndexPartition(
o_id out number,
o_tabpart_dataobj# out number,
o_sync_type out varchar2,
o_sync_memory out number,
o_option out varchar2,
i_cid in number,
i_pname in varchar2
);
/*---------------------------- OpenIndexMDScan ----------------------*/
/* open dr$index_object/dr$index_value cursors */
procedure OpenIndexMDScan(
p_idxid in number
);
/*---------------------------- NextIndexObject ---------------------------*/
/* get next dr$index_object cursor */
function NextIndexObject(
o_cla_id out binary_integer,
o_obj_id out binary_integer,
o_acnt out binary_integer
) return binary_integer;
/*---------------------------- GetIndexObject ----------------------------*/
/* get a single object id */
PROCEDURE GetIndexObject(
p_idxid in number,
p_cla_id in binary_integer,
o_obj_id out binary_integer,
o_acnt out binary_integer
);
/*-------------------------- GetAllIndexObjects ----------------------------*/
/* get the index objects as a table */
PROCEDURE GetAllIndexObjects(
p_idxid in number,
o_objs in out nocopy dr_def.ixo_tab
);
/*---------------------------- NextIndexValue ----------------------------*/
/* get next dr$index_value cursor */
function NextIndexValue(
o_cla_id out binary_integer,
o_att_id out binary_integer,
o_datatype out binary_integer,
o_sub_group out binary_integer,
o_sub_att_id out binary_integer,
o_sub_datatype out binary_integer,
o_value out varchar2
) return binary_integer;
/*---------------------------- NextIndexCDI ---------------------------*/
/* get next dr$index_cdi_column cursor */
function NextIndexCDI(
o_cdi_pos out binary_integer,
o_cdi_type# out binary_integer,
o_cdi_len out binary_integer,
o_cdi_name out varchar2,
o_cdi_sec out varchar2,
o_cdi_stype out binary_integer,
o_cdi_id out binary_integer
) return binary_integer;
/*---------------------------- GetDocidCount -----------------------------*/
/* get docid count */
function GetDocidCount(
p_idxid in number,
p_ixpid in number default null
) return number;
/*---------------------------- GetNextid -----------------------------*/
/* get next docid */
function GetNextid(
p_idxid in number,
p_ixpid in number default null
) return number;
/*---------------------------- GetIndexStats -----------------------------*/
/* get index stats from dr$stats */
procedure GetIndexStats(
p_idxid in number,
p_smplsz in out nocopy number
);
/*---------------------------- GetBaseTableName --------------------------*/
/* get base table name */
procedure GetBaseTableName(
p_idxid in number,
p_ixpid in number,
o_objname out varchar2
);
/*---------------------------- IncrementDocCnt --------------------------*/
/* increment docid count */
procedure IncrementDocCnt(
p_idxid in number,
p_ixpid in number,
p_delta in number
);
/*---------------------------- DecrementDocCnt --------------------------*/
/* decrement docid count */
procedure DecrementDocCnt(
p_idxid in number,
p_ixpid in number,
p_delta in number
);
/*---------------------------- AllocateDocids ---------------------------*/
/* allocate docids */
procedure AllocateDocids(
p_idxid in number,
p_ixpid in number,
p_allocsz in binary_integer,
p_startid out number
);
/*---------------------------- SetIndexStatus --------------------------*/
/* set index status */
STATE_NO_INDEX constant varchar2(10) := 'NO_INDEX';
STATE_POPULATE constant varchar2(10) := 'POPULATE';
STATE_POPULATE_K constant varchar2(10) := 'POPULATE_K';
STATE_PART_BUILD constant varchar2(10) := 'PARTBUILD';
STATE_INDEXING constant varchar2(10) := 'INDEXING';
STATE_INDEXED constant varchar2(10) := 'INDEXED';
STATE_IMPORT constant varchar2(10) := 'IMPORT';
STATE_POPULATE_P constant varchar2(10) := 'POPULATE_P';
procedure SetIndexStatus(
p_idxid in number,
p_ixpid in number,
p_status in varchar2,
f_commit in boolean default TRUE
);
/*---------------------------- GetIndexStatus -----------------------*/
/* get index status */
FUNCTION GetIndexStatus(
p_idxid in number
) return VARCHAR2;
/*---------------------------- ChangeIndexOption -----------------------*/
/* modify the index option field */
OPT_SET constant number := 0;
OPT_ADD constant number := 1;
OPT_REMOVE constant number := 2;
PROCEDURE ChangeIndexOption (
p_idxid in number,
p_opt in varchar2,
p_action in number,
p_ixpid in number default 0
);
/*----------------------------- AllocatePartId ---------------------------*/
/* Allocate index partition id */
FUNCTION AllocatePartId(
idxid in number
) return number;
/*----------------------------- CreatePartitionMD -----------------------*/
/* set up partition meta-data */
PROCEDURE CreatePartitionMD(
p_idxid in number,
p_ixpid in out number,
p_idx_partition in varchar2,
p_table_owner in varchar2,
p_table_name in varchar2,
p_tab_partition in varchar2,
p_storage in varchar2,
p_sync_type in out varchar2,
p_sync_memory in out varchar2,
p_sync_paradegree in out number,
p_sync_interval in out varchar2,
is_online in boolean default FALSE,
p_sync_dpl in boolean default FALSE,
p_opt_type in out varchar2,
p_opt_interval in out varchar2,
p_opt_paradegree in out number
);
/*----------------------------- DropPartitionMD --------------------------*/
/* drop partition meta-data */
PROCEDURE DropPartitionMD(
p_idxid in number,
p_ixpid in number
);
/*---------------------------- PurgeKGL ----------------------------------*/
/* purge KGL metadata cache */
PROCEDURE PurgeKGL(p_idxid in number, ia sys.odciindexinfo,
isPart boolean default FALSE);
PROCEDURE PurgeKGL(p_idx in dr_def.idx_rec);
PROCEDURE PurgeKGL(p_idxid in number, owner in varchar2,
index_name in varchar2,
other_name in varchar2 default NULL);
/*---------------------------- CreatePolicy ------------------------------*/
/* create policy */
IDX_TYPE_CONTEXT constant number := 0;
IDX_TYPE_CTXCAT constant number := 1;
IDX_TYPE_CTXRULE constant number := 2;
IDX_TYPE_CTXXPATH constant number := 3;
IDX_TYPE_CONTEXT2 constant number := 4;
PROCEDURE CreatePolicy(
ia in sys.ODCIIndexInfo,
p_idx_type in number,
p_idx_owner in varchar2,
p_idx_name in varchar2,
p_tab_owner in varchar2,
p_tab_name in varchar2,
p_col_name in varchar2,
p_col_type in varchar2,
p_lang_col in varchar2,
p_fmt_col in varchar2,
p_cset_col in varchar2,
p_idx_id out number,
p_dstore in varchar2 default null,
p_filter in varchar2 default null,
p_secgrp in varchar2 default null,
p_lexer in varchar2 default null,
p_wordlist in varchar2 default null,
p_stoplist in varchar2 default null,
p_storage in varchar2 default null,
p_indexset in varchar2 default null,
p_classifier in varchar2 default null,
p_txntional in varchar2 default null,
p_sync_type in out varchar2,
p_sync_memory in out varchar2,
p_sync_paradegree in out number,
p_sync_interval in out varchar2,
f_partitioned in boolean default FALSE,
f_functional in boolean default FALSE,
f_online in boolean default FALSE,
f_entity_policy in boolean default FALSE,
f_tree in boolean default FALSE,
p_sync_dpl in boolean default FALSE,
p_config_col in varchar2 default null,
p_async_upd in boolean default null,
p_dataguide in varchar2 default null,
p_search_on in varchar2 default null,
p_simple in number default driparse.SIMPLE_SYNTAX_NONE,
p_opt_type in varchar2 default null,
p_opt_interval in varchar2 default null,
p_opt_paradegree in number default null,
p_no_r in boolean default null
);
/*---------------------------- CopyPolicy ----------------------------------*/
/* copy index-level meta-data */
PROCEDURE CopyPolicy(
p_source_policy in varchar2,
p_pol_owner in varchar2,
p_pol_name in varchar2
);
/*---------------------------- DropPolicy ----------------------------------*/
/* drop index-level meta-data */
PROCEDURE DropPolicy(
p_idxid in number
);
/*---------------------------- DropUserPolicies ----------------------------*/
PROCEDURE DropUserPolicies(
p_username in varchar2 := null
);
/*----------------------------- ResetIndexIDs -----------------------------*/
/* reset owner and table id's during an import */
PROCEDURE ResetIndexIDs (
p_idxid out number,
p_owner in varchar2,
p_idx_name in varchar2,
p_tab_owner in varchar2,
p_tab_name in varchar2,
p_ipar_name in varchar2 default null,
p_tab_part in varchar2 default null
);
/*---------------------------- IndexHasPTable ------------------------------*/
FUNCTION IndexHasPTable(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasSTable ------------------------------*/
FUNCTION IndexHasSTable(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasSSortTable --------------------------*/
/* return TRUE if the index has $S* tables, otherwise FALSE */
FUNCTION IndexHasSSortTable(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasMTable ------------------------------*/
FUNCTION IndexHasMTable(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasFATables ----------------------------*/
FUNCTION IndexHasFATables(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasMVDATA ------------------------------*/
FUNCTION IndexHasMVDATA(
p_idxid in number)
RETURN boolean;
/*---------------------------- IsIndexReadable ------------------------------*/
FUNCTION IsIndexReadable(
p_idxid in number,
p_ixpid in number default NULL)
RETURN boolean;
/*---------------------------- IndexHasGTable ------------------------------*/
FUNCTION IndexHasGTable(
p_idxid in number,
p_ixpid in number default NULL)
RETURN boolean;
/*---------------------------- IndexHasGMaxRows -----------------------------*/
FUNCTION IndexHasGMaxRows(
p_idxid in number,
p_ixpid in number default NULL)
RETURN boolean;
/*---------------------------- IndexHasOTable ------------------------------*/
FUNCTION IndexHasOTable(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasDTable ------------------------------*/
FUNCTION IndexHasDTable(
p_idxid in number)
RETURN boolean;
/*---------------------------- IndexHasETable ------------------------------*/
FUNCTION IndexHasETable(
p_idxid in number)
RETURN boolean;
/*----------------------------- IndexHasKGTable ---------------------------*/
FUNCTION IndexHasKGTable(
p_idxid in number)
RETURN boolean;
/*----------------------- IndexHasFullLengthObjects ------------------------*/
FUNCTION IndexHasFullLengthObjects(
p_idx_id in number)
RETURN boolean;
/*--------------------- ThirtyCharacterNames -------------------------------*/
FUNCTION ThirtyCharacterNames (p_idx_id in number := null)
RETURN boolean;
/*-------------------------- IndexHasDataGuide ----------------------------*/
FUNCTION IndexHasDataGuide(
p_idxid in number)
RETURN boolean;
/*---------------------- CheckIndexesForExchange --------------------------*/
/* ensure that a global index and an index partition are compatible for */
/* exchange partition operation */
PROCEDURE CheckIndexesForExchange(
p_idxp in dr_def.idx_rec,
p_idxn in dr_def.idx_rec,
p_idxpid in number,
is_compart in boolean default FALSE
);
/*--------------------------- ExchangeIndexMD ---------------------------*/
/* exchange meta data */
procedure ExchangeIndexMD(
p_idxn in dr_def.idx_rec,
p_idxpid in number,
p_ixpp in dr_def.ixp_rec
);
/*------------------------- ExchangeIndexPartMD -------------------------*/
/* exchange meta data between partitions */
procedure ExchangeIndexPartMD(
p_idxid1 in number,
p_ixpp1 in dr_def.ixp_rec,
p_idxid2 in number,
p_ixpp2 in dr_def.ixp_rec
);
/*--------------------------- RenameIndex -------------------------------*/
/* rename an index */
procedure RenameIndex(
p_idxid in number,
p_ixpid in number,
p_newname in varchar2
);
/*--------------------------- RenameIndexCol ----------------------------*/
/* rename index column */
procedure RenameIndexCol(
p_idxid in number,
p_newname in varchar2
);
/*--------------------------- RenameIndexTab ----------------------------*/
/* rename base table */
procedure RenameIndexTab(
p_idxid in number,
owner in varchar2,
p_newname in varchar2
);
/*--------------------------- GetAllPartitionIDs ------------------------*/
/* get all partition id's */
procedure GetAllPartitionIDs(
p_idxid in number,
o_ids out nocopy dr_def.id_tab
);
/*--------------------------- GetAllPartitionOPTs ------------------------*/
/* get all partition option's */
procedure GetAllPartitionOPTs(
p_idxid in number,
o_opts out nocopy dr_def.vc256_tab
);
/*--------------------------- GetAllPartitionNMs ------------------------*/
/* get all index partition names */
procedure GetAllPartitionNMs(
p_idxid in number,
o_names out nocopy dr_def.vc30_tab
);
/*--------------------------- SetIndexMD --------------------------------*/
/* change a field of index meta-data */
MDF_LANGCOL constant number := 0;
MDF_FMTCOL constant number := 1;
MDF_CSETCOL constant number := 2;
MDF_CONFIGCOL constant number := 3;
MDF_NEXTID constant number := 4;
MDF_SYNC_TYPE constant number := 5;
MDF_SYNC_MEMSIZE constant number := 6;
MDF_SYNC_PARADEGREE constant number := 7;
MDF_SYNC_INTERVAL constant number := 8;
MDF_OPT_TYPE constant number := 9;
MDF_OPT_INTERVAL constant number := 10;
MDF_OPT_PARADEGREE constant number := 11;
procedure SetIndexMD(
p_idxid in number,
p_ixpid in number,
p_field in binary_integer,
p_newval in varchar2,
f_commit in boolean default TRUE
);
/*--------------------------- CreateSQE ----------------------------------*/
/* create a new SQE (should be in its own package, like drisgp or drispl, */
/* but this is only two procedures) */
procedure CreateSQE(
p_sqe in varchar2
,p_query in clob
,p_duration in number
);
/*--------------------------- DropSQE -----------------------------------*/
/* drop SQE */
procedure DropSQE(
p_sqe in varchar2
);
/*--------------------------- DropUserSQEs ---------------------------------*/
/* Drop SQE's owned by a user, or all unreferenced SQEs if p_username is */
/* null */
procedure DropUserSQEs(
p_username in varchar2 := null
);
/*--------------------------- GetSysParam ----------------------------------*/
/* get value of system parameter (should be in something like driadm, but */
/* this is only one procedure... */
function GetSysParam (
p_param in varchar2
) return varchar2;
/*---------------------------- RecordJob ----------------------------------*/
/*record the job name in dr$index */
procedure RecordJob (
idxid in number,
ixpid in number default null,
jobname in varchar2
);
/*--------------------------- GetJob ------------------------------------*/
/* Remove the job */
function GetJob (
idxid in number,
ixpid in number default NULL
) return varchar2;
/*--------------------------- SetSyncAttr-------------------------------*/
procedure SetSyncAttr(
idxid in number,
ixpid in number,
sync_type in varchar2,
sync_memory in varchar2,
sync_paradegree in number,
sync_interval in varchar2,
opt_type in varchar2 default NULL,
opt_interval in varchar2 default NULL,
opt_paradegree in number default NULL
);
/*--------------------------- GetSyncAttr-------------------------------*/
procedure GetSyncAttr(
idxid in number,
ixpid in number default null,
sync_type out varchar2,
sync_memory out varchar2,
sync_paradegree out number,
sync_interval out varchar2,
sync_jobname out varchar2,
opt_type out varchar2,
opt_interval out varchar2,
opt_paradegree out number
);
/*---------------------- CheckIndexForOraCon -----------------------------*/
/*compare a policy and index and determine if they are close enough */
function CheckIndexForOraCon (
p_idxid in number,
p_polid in number
) return number;
/*---------------------- OraConRewriteChk -----------------------------*/
/* Checks to see if a Text index and Text query qualifies for */
/* Ora:Contains() query rewrite. */
function OraConRewriteChk (
p_idxname in varchar2,
p_idxown in varchar2,
p_polname in varchar2,
p_polown in varchar2,
p_qry in varchar2
) return boolean;
/*---------------------- IndexHasPendingRows --------------------------*/
/* Checks to see if a Text index currently has pending rows */
function IndexHasPendingRows (
p_idxid in number)
return boolean;
/*---------------------- GetMVFlag -------------------------------------*/
/* checkto see if index is on Materialized view */
procedure GetMVFlag(
table_id in number,
owner_name in varchar2,
opt out binary_integer
);
/*---------------------------- CopyIndexMDRIO ---------------------------*/
/* copy index meta-data for Recreate Index Online */
PROCEDURE CopyIndexMDRIO(
p_src in dr_def.idx_rec,
p_dst in out nocopy dr_def.idx_rec,
p_create in boolean
);
PROCEDURE CopyPartMDRIO(
ixp in dr_def.ixp_rec,
idx in dr_def.idx_rec,
p_create in boolean
);
/*---------------------------- GetAllCDIColumns ---------------------------*/
PROCEDURE GetAllCDIColumns(
p_idxid in number,
o_cdi in out nocopy dr_def.cdi_tab
);
/*---------------------------- UpdateSDATA ---------------------------*/
PROCEDURE UpdateSDATA(
p_idxid in number,
p_ixpid in number,
p_docid in number,
p_sdata_id in number,
p_dtype in varchar2,
p_nval in sys.anydata
);
/*---------------------------- ChkIndexOption -----------------------------*/
/*
Take in index id, and an option letter (see drdmlop() for a list of
options), return 1 if the given option is set, 0 otherwise.
*/
function ChkIndexOption (
p_idxid in number,
p_opt in varchar2
) return number;
/*---------------------------- SelectUserAnlDictLob-----------------------------*/
/*
Take index id and dictionary language as input and return user supplied
dictionary lob to be used by ATG auto lexer
*/
function SelectUserAnlDictLob(
p_idxid in number,
p_dictlang in varchar2
) return clob;
/*--------------------------- CompareIndexObjectValuesPref -----------------*/
/*
* compare the attribute values of a single class between an index and a
* preference name. return the actual differences in a table of type ixo_tab
*/
procedure CompareIndexObjectValuesPref(
p_idxid in number,
p_pref in varchar2,
p_cla_id in number,
diffs in out dr_def.ixv_tab
);
/*--------------------------- RemoveStageItab ------------------------------*/
/* remove stage_itab from dr$index_value without modifying storage pref */
procedure RemoveStageItab(
p_idxid in number,
p_ixpid in number default 0
);
/*--------------------------- AddStageItab ---------------------------------*/
/* add stage_itab from dr$index_value without modifying storage pref */
procedure AddStageItab(
p_idxid in number,
p_ixpid in number default 0
);
/*--------------------------- GetFieldFid ---------------------------------*/
/* Given a field section name and tag, find its FID */
procedure GetFieldFid(
idxid in number,
fld_name in varchar2,
fld_tag in varchar2,
fldfid out number);
/*--------------------------- RemZoneFromMD -------------------------------*/
/* Given an Index ID remove Zone sections from Index Metadata */
procedure RemZoneFromMD(
idxid in number,
zone_name in varchar2,
zone_tag in varchar2);
/*--------------------------- check_auto_optimize --------------------------*/
/* is this index subject to auto_optimize */
CheckAutoOptimizeOK constant number := 0;
CheckAutoOptimizeDisable constant number := 1;
CheckAutoOptimizeRunning constant number := 2;
CheckAutoOptimizeNotReg constant number := 3;
CheckAutoOptimizeConcOpt constant number := 4;
function check_auto_optimize(p_idx in dr_def.idx_rec,
p_ixp in dr_def.ixp_rec,
p_override in boolean default false)
return number;
/*-------------------------- auto_optimize_on --------------------------*/
/* check if auto_opt is on for this index or partition */
procedure auto_optimize_on(p_idx in number,
p_ixp in number,
auto in out boolean);
/*--------------------------- start_auto_optimize --------------------------*/
/* start an auto_optimize job */
procedure start_auto_optimize;
/*--------------------------- stop_auto_optimize ---------------------------*/
/* forcibly stop an auto_optimize job */
procedure stop_auto_optimize;
/*--------------------------- run_auto_optimize ---------------------------*/
/* actually run an auto_optimize job */
procedure run_auto_optimize;
/*--------------------------- add_auto_optimize ----------------------------*/
/* add an auto optimize index / partition */
procedure add_auto_optimize(p_idx in dr_def.idx_rec,
p_ixp in dr_def.ixp_rec);
/*--------------------------- remove_auto_optimize -------------------------*/
/* remove an auto optimize index / partition */
procedure remove_auto_optimize(p_idxid in number,
p_partname in varchar2 default null,
err_when_missing in boolean default FALSE);
/*--------------------------- reset_auto_optimize_status -------------------*/
/* reset the autoopt_status table */
procedure reset_auto_optimize_status;
/*--------------------------- autoopt_push_token --------------------------*/
/* autoopt_push_token - push a token to autooptimize */
procedure autoopt_push_token(p_message in raw);
/*--------------------------- autoopt_pop_token ----------------------------*/
/* autoopt_pop_token - pop a token for autooptimize */
procedure autoopt_pop_token(p_ret out number,
p_message out raw);
/*--------------------------- autoopt_cre_pipe -----------------------------*/
/* autoopt_cre_pipe - create a private pipe for autooptimize */
procedure autoopt_cre_pipe(p_ret out number);
/*--------------------------- TxnalGetKey --------------------------------*/
/* Return the key if it has been set. Use second parameter to test if it
* has not been set */
procedure TxnalGetKey(
p_key in out raw
);
/*--------------------------- TxnalSetKey --------------------------------*/
/* Set the key. Set flag */
procedure TxnalSetKey(
p_key in raw
);
/*--------------------------- GetMultiblockReadCount -----------------------*/
function GetMultiblockReadCount return number;
/*------------------------ GetSLXMdataSecID ------------------------------*/
/* Get section id/token type for DR$ML MDATA section, doc level lexer */
FUNCTION GetSLXMdataSecID(
idxid in number
) return number;
/*--------------------------- isSES ----------------------------------------*/
/* This function checks whether we are running as SES */
FUNCTION isSES return boolean;
PROCEDURE GetAllSDATASecs(
idxid in number,
sdata_secs in out dr_def.sec_tab
);
/*--------------------------- partid_to_partname -----------------------*/
/* Fetch partition name, given partition id and index id */
FUNCTION partid_to_partname(
partid in number,
idxid in number
) RETURN varchar2;
/* 14175174: ------------- SubstringEnabled ------------------------*/
FUNCTION SubstringEnabled(p_idxid in number) RETURN number;
-- In sync with drn.h
I_TRANSIT_DEFAULT constant number := 0; /* for not simplified syntax */
I_TRANSIT_NONE constant number := 1;
I_TRANSIT_NONE_TO_PARTIAL constant number := 2;
I_TRANSIT_NONE_TO_FULL constant number := 3;
I_TRANSIT_PART_TO_FULL constant number := 4;
I_TRANSIT_CREATEOP constant number := 9;
S_TRANSIT_DEFAULT constant number := 0;
S_TRANSIT_NONE constant number := 1;
S_TRANSIT_NONE_TO_FULL constant number := 2;
S_TRANSIT_CREATEOP constant number := 9;
DG_TRANSIT_DEFAULT constant number := 0;
DG_TRANSIT_NONE constant number := 1;
DG_TRANSIT_NONE_TO_FULL constant number := 2;
DG_TRANSIT_FULL_TO_NONE constant number := 3;
DG_TRANSIT_METADATA_ONLY constant number := 4;
DG_TRANSIT_CREATEOP constant number := 9;
/* ---------------------- GetSSCurrentMetadata ---------------------*/
/* Get current index metadata */
FUNCTION GetSSCurrentMetadata(p_idxid in number) RETURN drixmd.ss_metadata;
/* ---------------------- getTransitionInfo ------------------------*/
/* Get transition string relevant for simplified syntax ALTER INDEX */
PROCEDURE getTransitionInfo(current_state in drixmd.ss_metadata,
dataguide in varchar2,
search_on in varchar2,
transition in out number);
/* ---------------------- setTransitionInfo ------------------------*/
/* Set transition info relevant for simplified syntax ALTER INDEX */
PROCEDURE setTransitionInfo(ia in sys.ODCIIndexInfo,
idxid in number,
state in drixmd.ss_metadata,
dataguide in varchar2,
search_on in varchar2,
transition in varchar2);
/*--------------------------GetAllPartitionNames---------------------*/
/* Get the names of all partitions of base table */
FUNCTION GetAllPartitionNames(
p_owner varchar2,
p_table_name varchar2,
sharded boolean default FALSE
) RETURN clob;
/*------------------------- ObjectIsSharded -------------------------*/
/* Check if index is a sharded object */
FUNCTION ObjectIsSharded(
p_owner varchar2,
p_obj_name varchar2
) RETURN boolean;
/*-------------------------- IsShardCatalog -------------------------*/
/* Check if current instance is the shard catalog instance */
FUNCTION IsShardCatalog
RETURN boolean;
/*--------------------------GetIndexTypeName---------------------*/
/* Get the name of index type */
FUNCTION GetIndexTypeName(
p_owner varchar2,
p_index_name varchar2
) RETURN varchar2;
/*--------------------------GetIndexTableName---------------------*/
/* Get the name of index table
*/
FUNCTION GetIndexTableName(
p_owner varchar2,
p_index_name varchar2
) RETURN varchar2;
/*------------------------- TablePartIsSubpart ----------------------*/
/* Checks if partition name is actually a subpartition name */
FUNCTION TablePartIsSubpart(
t_owner in varchar2,
t_name in varchar2,
p_name in varchar2
) RETURN BOOLEAN;
/*--------------------------- add_bg_optimize ----------------------------*/
/* add a background job of optimize index / partition under ctxsys */
procedure add_bg_optimize(p_idx in dr_def.idx_rec,
p_ixp_name in varchar2,
p_optlevel in varchar2,
p_para_degree in number, -- parallel degree
p_repeat_interval in varchar2,
p_logfile in varchar2 default null,
p_events in number default null
);
/*--------------------------- run_bg_optimize ----------------------------*/
/* run background job of optimize index / partition under ctxsys */
procedure run_bg_optimize(p_idx_name in varchar2,
p_idx_ownerid in number,
p_idx_owner in varchar2,
p_ixp_name in varchar2,
p_opt_level in varchar2,
p_para_degree in number,
p_logfile in varchar2,
p_events in varchar2
);
/*--------------------------- drop_bg_optimize ----------------------------*/
-- drop background jobs and programs of optimize index/partition
procedure drop_bg_optimize(p_idx_id in number,
p_idx_name in varchar2,
p_ixp_id in number default null,
p_optlevel in varchar2 default null
);
/*--------------------------- add_dictionary ----------------------------*/
PROCEDURE ADD_DICTIONARY(name in VARCHAR2,
language in VARCHAR2,
dictionary in CLOB);
/*--------------------------- drop_dictionary ----------------------------*/
PROCEDURE DROP_DICTIONARY(name in VARCHAR2);
/*------------------------- drop_all_dictionary --------------------------*/
PROCEDURE DROP_ALL_DICTIONARY(owner in number);
/*------------------------- rem_user_anl_dict ----------------------------*/
PROCEDURE rem_user_anl_dict (p_idxid in NUMBER);
/*------------------------- copy_user_anl_dict -------------------------- */
PROCEDURE COPY_USER_ANL_DICT(p_idx_id in NUMBER,
lv_pref in dr_def.pref_rec);
procedure enable_query_stats( indexname in varchar2);
procedure disable_query_stats( indexname in varchar2);
/*---------------------------------- insert_index ------------------------*/
PROCEDURE insert_index(
p_idx_type IN number,
p_idx_owner_id IN number,
p_idx_name IN varchar2,
p_tab_owner_id IN number,
p_obj_id IN number,
p_idx_key_name IN varchar2,
p_idx_key_type IN varchar2,
p_idx_text_name IN varchar2,
p_idx_text_type IN varchar2,
p_idx_text_length IN varchar2,
p_idx_docid_count IN varchar2,
p_idx_status IN varchar2,
p_idx_version IN varchar2,
p_idx_nextid IN varchar2,
p_idx_langcol in varchar2,
p_idx_fmtcol in varchar2,
p_idx_csetcol in varchar2,
p_idx_configcol in varchar2,
p_idx_option in varchar2,
p_idx_sync_type in varchar2,
p_idx_sync_memory in varchar2,
p_idx_sync_para_degree in number,
p_idx_sync_interval in varchar2,
p_idx_auto_opt_type in varchar2,
p_idx_auto_opt_interval in varchar2,
p_idx_auto_opt_para_degree in number
) accessible by (ctxsys.driimp);
/*------------------------------ insert_partition -------------------------*/
PROCEDURE insert_partition(
p_ixp_id IN number,
p_ixp_name IN varchar2,
p_table_part# IN number,
p_ixp_docid_count IN number,
p_ixp_status IN varchar2,
p_ixp_nextid IN number,
p_ixp_opt_token IN varchar2,
p_ixp_opt_type IN number,
p_ixp_opt_count IN number,
p_ixp_sync_type IN varchar2,
p_ixp_sync_memory IN varchar2,
p_ixp_sync_para_degree IN number,
p_ixp_sync_interval IN varchar2,
p_ixp_auto_opt_type IN varchar2,
p_ixp_auto_opt_interval IN varchar2,
p_ixp_auto_opt_para_degree IN number
) accessible by (ctxsys.driimp);
/*------------------------------ insert_object ----------------------------*/
PROCEDURE insert_object(
p_cla_name IN varchar2,
p_obj_name IN varchar2,
p_acnt IN varchar2
) accessible by (ctxsys.driimp);
/*-------------------------- insert_value --------------------------*/
PROCEDURE insert_value(
p_att_name IN varchar2,
p_att_value IN varchar2
) accessible by (ctxsys.driimp);
/*-------------------------- insert_sub_value ----------------------------*/
PROCEDURE insert_sub_value(
p_att_name IN varchar2,
p_sub_group IN number,
p_sub_obj IN varchar2,
p_sub_att IN varchar2,
p_sub_value IN varchar2
) accessible by (ctxsys.driimp);
/*-------------------------- insert_pending ----------------------------*/
PROCEDURE insert_pending(
p_pid IN number,
p_rowid IN rowid
) accessible by (ctxsys.driimp);
/*-------------------------- insert_cdicol ----------------------------*/
PROCEDURE insert_cdicol(
p_cdi_column_position IN number,
p_cdi_column_name IN varchar2,
p_cdi_column_type IN varchar2,
p_cdi_column_type# IN number,
p_cdi_column_length IN number,
p_cdi_section_name IN varchar2,
p_cdi_section_type IN number,
p_cdi_section_id IN number,
p_cdi_sort_order IN varchar2
) accessible by (ctxsys.driimp);
/*-------------------------- insert_user_extract_rule ----------------------*/
PROCEDURE insert_user_extract_rule(
p_erl_rule_id IN number,
p_erl_language IN varchar2,
p_erl_rule IN varchar2,
p_erl_modifier IN varchar2,
p_erl_type IN varchar2,
p_erl_status IN number,
p_erl_comments IN varchar2
) accessible by (ctxsys.driimp);
end drixmd;
/
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO