rem rem Copyright (c) 2002, 2011, Oracle and/or its affiliates. rem All rights reserved. rem NAME rem drvxmd.pkh - DR inVoker's indeX MetaData access rem rem DESCRIPTION rem functions for querying and setting index meta-data rem rem NOTES rem SECURITY SECURITY SECURITY rem this package is public execute because several of its procedures rem are called from C code. ensure that every public call is rem protected by security checking or some other method rem SECURITY SECURITY SECURITY rem rem MODIFIED (MM/DD/YY) rem gauryada 05/31/11 - Backport snippet support for result set rem interface rem surman 05/25/11 - Backport surman_bug-12398857 from main rem rkadwe 03/02/11 - Btree Backed SDATA rem surman 10/06/10 - 10169701: Add RecordOptTokenError rem rpalakod 06/04/10 - Bug 9571600 rem rpalakod 05/21/10 - Bug 9354204 rem surman 03/12/09 - 4311266: Add check_file_access_role rem surman 01/14/10 - Backport surman_bug-8516316 from main rem rpalakod 12/15/09 - Bug 9216342 rem rpalakod 09/20/09 - Bug 8928622 rem nenarkhe 08/12/09 - MVDATA update rem rpalakod 08/01/09 - autooptimize rem surman 07/23/09 - 8516316: Add p_resetN to OptSetState rem rpalakod 03/30/09 - Backport rpalakod_bug-8344603 from main rem rpalakod 02/06/09 - nrtidx rem surman 11/14/08 - 7540290: Use number instead of binary_integer rem rpalakod 07/31/08 - Bug 7298172: Change in behavior of idx_version rem rpalakod 05/19/08 - Session Duration SQEs rem wclin 05/06/07 - add ChkIndexOption() rem wclin 08/07/06 - add GetSecDataType rem wclin 06/23/06 - maxtime support for $S optimize rem surman 06/06/06 - 5233309: smplsz to binary_integer in rem GetIndexStats rem yucheng 01/20/06 - recreate_index_online partition support rem gkaminag 09/30/05 - cdi indexing rem yucheng 11/03/04 - add GetMVFlag rem wclin 11/14/03 - add set_reverse_docid_switch() rem gkaminag 10/23/03 - optimize type rem yucheng 08/13/03 - create local index online support rem yucheng 06/10/03 - rem yucheng 05/15/03 - GetIndexMD return sync_Type rem yucheng 03/07/03 - remove tabpart_obj# rem wclin 02/26/03 - modify GetIndexStats() rem gkaminag 12/06/02 - security for classification rem wclin 10/04/02 - get smplsz in GetIndexStats rem yucheng 07/12/02 - merge split policy rem gkaminag 07/02/02 - security overhaul phase 2 rem gkaminag 06/19/02 - gkaminag_security_ph1_020603 rem gkaminag 06/03/02 - creation create or replace package drvxmd authid current_user is /*---------------------------- 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 binary_integer, o_idx_src_name out varchar2, o_idx_src_id out binary_integer, o_idx_version out binary_integer, o_config_col out varchar2 ); /*---------------------------- 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 and 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; /*---------------------------- 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 binary_integer, p_ixpid in binary_integer default null ) return binary_integer; /*---------------------------- GetIndexStats -----------------------------*/ /* get index stats from dr$stats */ procedure GetIndexStats( p_idxid in number, p_smplsz in out nocopy number ); /*---------------------------- GetBaseTableName --------------------------*/ /* get base table name */ function GetBaseTableName( p_idxid in number, p_ixpid in number default null ) return 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 ); /*--------------------------- IncrementVersion -------------------------*/ /* increment version of index */ procedure IncrementVersion( p_idxid in number ); /*---------------------------- RecordIndexError -------------------------*/ /* records an error to the dr$index_error table */ procedure RecordIndexError( p_idxid in number, p_textkey in varchar2, p_stack in varchar2 ); /*---------------------------- OptStartTimer -----------------------------*/ /* starts optimization timer */ procedure OptStartTimer; /*---------------------------- OptGetTimer -------------------------------*/ /* gets optimization timer */ function OptGetTimer return binary_integer; /*---------------------------- OptGetState -------------------------------*/ /* get full optimize state */ procedure OptGetState( p_idxid in number, p_ixpid in number, p_ntable_name in varchar2, p_itable_name in varchar2, p_sntable_name in varchar2, p_beg_s_opt in boolean, o_opt_token out varchar2, o_opt_type out number ); /*---------------------------- OptGetType -------------------------------*/ /* get type optimize start token */ procedure OptGetType( p_idxid in number, p_ixpid in number, p_ntable_name in varchar2, p_itable_name in varchar2, p_sntable_name in varchar2, o_opt_token out varchar2, o_opt_type in number ); /*---------------------------- OptSetState -------------------------------*/ /* set full optimize state */ procedure OptSetState( p_idxid in number, p_ixpid in number, p_opt_token in varchar2, p_opt_type in number ); /*---------------------------- GetFieldSecName -----------------------------*/ /* get field section name */ function GetFieldSecName ( p_idxid in number, p_secid in number ) return varchar2; /*---------------------------- GetPrefClaObj -----------------------------*/ procedure GetPrefClaObj( p_preid in number, o_claid out number, o_objid out number ); /*---------------------------- GetObjDefault -----------------------------*/ procedure GetObjDefault( p_oatid in number, o_default out varchar2 ); /*---------------------------- OpenPrefValue ------------------------------*/ procedure OpenPrefValue( p_preid in number ); /*---------------------------- NextPrefValue ------------------------------*/ function NextPrefValue( o_value out varchar2, o_oatid out number ) return binary_integer; /*---------------- set_reverse_docid_switch -------------------*/ /* NAME Set_reverse_docid_switch DESCRIPTION Turns ON/OFF reverse docid processing for a specified index. ARGUMENTS owner_name index owner index_name index name value switch value (ON or OFF) */ PROCEDURE set_reverse_docid_switch( owner_name in varchar2, index_name in varchar2, value in varchar2 ); /*--------------- GetMVFlag ------------------------------------------------*/ /* NAME GetMVFlag DESCRIPTION Check whether it's index on Materialized View ARGUMENTs table_id owner_name opt 1 -- index on MView 0 -- not index on MView */ PROCEDURE GetMVFlag( table_id in number, owner_name in varchar2, opt out binary_integer ); /*---------------------------- GetSecDataType -----------------------------*/ /* get section datatype, mainly for MDATA and SDATA */ function GetSecDataType ( p_idxid in number, p_secid in number ) return number; /*---------------------------- 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; /*--------------------------- ctx_sqe_tbl_func ------------------------------*/ /* Table function for creating the ctx_user_sqes view */ type ctx_sqe_type is record( sqe_owner# number, sqe_name varchar2(30), sqe_query clob); type ctx_sqe_type_tab is table of ctx_sqe_type; function ctx_sqe_tbl_func return ctx_sqe_type_tab pipelined; /*---------------------- check_file_access_role -----------------------------*/ /* Returns TRUE if the specified user has the role given by file_access_role and can therefore create/sync indexes using file or URL datastore */ function check_file_access_role(p_user IN varchar2) return boolean; /*--------------------------- autoopt_prep --------------------------------*/ /* autoopt_prep - preparation for autoopt */ procedure autoopt_prep(p_idxid in number, p_ixpid in number, p_wait in number, p_lockret in out number ); /*--------------------------- autoopt_clo --------------------------------*/ /* autoopt_clo - close for autoopt */ procedure autoopt_clo; /*--------------------------- autoopt_push_token --------------------------*/ /* autoopt_push_token - push a token to autooptimize */ procedure autoopt_push_token(p_idxid in number, p_message in raw); /*--------------------------- TxnalGetKey --------------------------------*/ /* Return the key if it has been set. Returns Null if not set */ procedure TxnalGetKey( p_key in out raw ); /*--------------------------- TxnalSetKey --------------------------------*/ /* Set the key. Set flag */ procedure TxnalSetKey( p_key in raw ); /*------------------------ GetSLXMdataSecID ------------------------------*/ /* Get section id/token type for DR$ML MDATA section, doc level lexer */ FUNCTION GetSLXMdataSecID( idxid in number ) return number; /*------------------------ RecordOptTokenError ---------------------------*/ PROCEDURE RecordOptTokenError( token_text in varchar2, token_type in number ); /*----------------------- ProcessN -------------------------------*/ PROCEDURE ProcessN(p_idxid in number, p_ixpid in number, del in number); end drvxmd; /