MINI MINI MANI MO

Path : /proc/self/root/opt/oracle/product/18c/dbhomeXE/ctx/admin/
File Upload :
Current File : //proc/self/root/opt/oracle/product/18c/dbhomeXE/ctx/admin/drvddl.pkh

rem 
rem Copyright (c) 2002, 2017, Oracle and/or its affiliates. 
rem All rights reserved.
rem
rem    NAME
rem      drvddl.pkh - DR cartridge internal, inVoker's rights DDL services
rem
rem    DESCRIPTION
rem      functions called by ConText cartridge routines to perform 
rem      various DDL functionalities
rem   
rem    NOTES
rem  
rem 
rem    BEGIN SQL_FILE_METADATA
rem      SQL_SOURCE_FILE: ctx_src_2/src/dr/admin/drvddl.pkh
rem      SQL_SHIPPED_FILE: ctx/admin/drvddl.pkh
rem      SQL_PHASE: DRVDDL_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    boxia        07/15/17 - Bug 25952271: prevent public access to
rem                            drvxmd.{add|drop|run}_bg_optimize
rem    snetrava     06/21/17 - Bug 26313456 Parallel $KG Optimize
rem    rodfuent     05/15/17 - Bug 25217590: Add functions for old DML callouts
rem    demukhin     05/25/17 - bug 26051570: keep $R for legacy indexes
rem    boxia        03/17/17 - Bug 25468759: PARALLEL for CIX/AIX OPTIMIZE
rem    boxia        01/17/17 - Bug 25390928: add opt_type, opt_interval to
rem                            partition
rem    boxia        11/19/16 - Bug 25172618: modify IndexCreate
rem    snetrava     11/02/16 - Added Section Type parameter to IndexOptimize
rem    rkadwe       03/21/16 - Bug 22878664
rem    aczarlin     02/22/16 - bug 22302092 default ctxagg DOP is 4
rem    hxzhang      09/08/15 - bug#21804525, add PartitionAdd
rem    rkadwe       08/26/15 - Bug 20699336
rem    aczarlin     08/07/15 - bug 21562436 ctxagg
rem    aczarlin     07/27/15 - ctxagg
rem    hxzhang      07/17/15 - system managed partiton for CONTEXT_V2
rem    rkadwe       05/01/15 - Alter index simplified syntax
rem    shuroy       04/27/15 - Adding maxtokens to IndexOptimize
rem    surman       01/23/15 - 20411134: Add SQL metadata tags
rem    rkadwe       02/28/14 - Dataguide + NEVER_POPULATE
rem    surman       03/15/13 - 16473661: Common start and end scripts
rem    gauryada     05/23/12 - bug#13724080
rem    gauryada     03/21/12 - Partition specific stage_itab enhancements
rem    rpalakod     01/22/12 - repopulate_dollarn
rem    hsarkar      12/12/11 - Asynchronous update project
rem    gauryada     05/12/11 - Added configuration column to dr$index
rem    ssethuma     05/08/11 - Add section specific stopword
rem    rkadwe       02/09/11 - Btree Backed SDATA
rem    rpalakod     11/15/10 - Bug 10276515
rem    surman       10/06/10 - 10169701: Handle errors during optimize rebuild
rem    rpalakod     05/24/10 - Bug 9354204
rem    rkadwe       05/12/10 - Bug 9692791
rem    rkadwe       04/15/10 - Activate Direct Path Loading
rem    rkadwe       03/25/10 - Document Level Lexer Phase 2
rem    rpalakod     03/09/10 - optimize rearchitecture
rem    rpalakod     03/02/10 - bug 9439697
rem    rpalakod     02/24/10 - Bug 9409038
rem    nenarkhe     12/17/09 - Bug 9141863
rem    igeller      12/04/09 - bug 8918625: Adding split_dollari()
rem    igeller      09/16/09 - adding SplitDollari() for bug 8918625
rem    rpalakod     05/28/09 - Backport rpalakod_bug-8500390 from main
rem    rpalakod     05/26/09 - Bug 8511078
rem    rpalakod     05/06/09 - Backport rpalakod_bug-8473813 from main
rem    rpalakod     05/05/09 - Bug 8473813: disable stage_itab
rem    rpalakod     03/30/09 - Backport rpalakod_bug-8344603 from main
rem    rpalakod     03/25/09 - ttype default 0 in IndexOptimize
rem    igeller      07/25/08 - make CursorToBitVector() public
rem    wclin        10/30/06 - add IndexColRename() 
rem    wclin        01/09/06 - take out CDI hack 
rem    yucheng      01/04/06 - rebuild partition online 
rem    yucheng      11/28/05 - 
rem    gkaminag     10/25/05 - sdata update 
rem    yucheng      10/20/05 - recreate index online phase2 
rem    gkaminag     10/13/05 - incremental indexing enhancements 
rem    wclin        10/16/03 - spprt altr idx rplc metadata (non)txntional 
rem    smuralid     10/09/03 - IndexSync: direct_path defaults to false 
rem    gkaminag     10/23/03 - optimize type 
rem    yucheng      08/11/03 - local online indexing support 
rem    gkaminag     07/24/03 - replace metadata partition
rem    yucheng      06/26/03 - Fix bug 2960964
rem    smuralid     06/23/03 - IndexPartResume: add 'isReplace' param
rem    gkaminag     06/11/03 - replace lang col and lexer
rem    gkaminag     06/05/03 - replace metadata
rem    yucheng      05/08/03 - DML enhancements
rem    smuralid     04/21/03 - IndexSync: new parameter 'direct_path'
rem    wclin        05/09/03 - statement consistency support
rem    gkaminag     03/06/03 - switch user on opt if needed
rem    smuralid     12/25/02 - IndexCreate: eliminate 'roption' parameter
rem    yucheng      11/20/02 - inter-partition parallel support
rem    smuralid     11/18/02 - parallel optimize issues
rem    gkaminag     07/03/02 - security phase 2
rem    gkaminag     06/25/02 - gkaminag_misc_020625
rem    gkaminag     06/03/02 - creation 

@@?/rdbms/admin/sqlsessstart.sql

create or replace package drvddl authid current_user as

  pv_idx_mem            number;
  pv_is_import          boolean;
  pv_master_params      varchar2(2000);
  pv_partition_populate boolean;

  px_partition_error    EXCEPTION;

  PARALLEL_OP  constant number :=  1;      
  CREATE_OP    constant number := 16;      
  RESUME_OP    constant number := 32;      

  P_CREATE_OP  constant number := 16 + 1;  
  P_RESUME_OP  constant number := 32 + 1;  
  P_SYNC_OP    constant number := 64 + 1;  

  CTXAGG_PAR   constant number := 4;  /* default ctxagg parallel degree */

  -- 10169701: Keep track of any tokens which had errors during optimize 
  -- rebuild
  type text_tab is table of varchar2(64) index by binary_integer;
  type type_tab is table of number index by binary_integer;
  opt_rebuild_error_text text_tab;
  opt_rebuild_error_type type_tab;

  BGOPT_SET    constant drvutl.dr_shortbuf := '1';
  BGOPT_UNSET  constant drvutl.dr_shortbuf := '0';

/*----------------------- PartitionCreate  -----------------------*/

PROCEDURE PartitionCreate(
  ia              in  sys.ODCIIndexInfo,
  owner           in  varchar2,
  index_name      in  varchar2,
  index_partition in  varchar2,
  table_owner     in  varchar2,
  table_name      in  varchar2,
  table_partition in  varchar2,
  idxmem          in  number,
  storage         in  varchar2,
  populate        in  boolean default TRUE,
  sync_type       in  varchar2 default NULL,
  sync_memory     in  varchar2 default NULL,
  sync_paradegree in  number   default NULL,
  sync_interval   in  varchar2 default NULL,
  is_online       in  boolean default FALSE,
  sync_dpl        in  boolean default FALSE,
  opt_type        in  varchar2 default NULL,
  opt_interval    in  varchar2 default NULL
);

/*-------------------------IndexPartitionLoad---------------------------*/
/* Populate the index content tables for system partitioned index       */
PROCEDURE IndexPartitionLoad(
  ia              in  sys.ODCIIndexInfo,
  owner           in  varchar2,
  index_name      in  varchar2,
  index_partition in  varchar2,
  table_owner     in  varchar2,
  table_name      in  varchar2,
  table_partition in  varchar2,
  idxmem          in  number,
  storage         in  varchar2,
  populate        in  boolean default TRUE,
  sync_type       in  varchar2 default NULL,
  sync_memory     in  varchar2 default NULL,
  sync_paradegree in  number   default NULL,
  sync_interval   in  varchar2 default NULL,
  is_online       in  boolean  default FALSE,
  sync_dpl        in  boolean  default FALSE
);

/*----------------------- IndexCreate  -----------------------*/
/*
  NAME
    IndexCreate

  DESCRIPTION
    create an index

  ARGUMENTS
    owner        index owner
    index_name   index name
    table_owner  table owner
    table_name   table name
    column_name  text column name
    column_type  text column type (optional)
    populate     populate/nopopulate
    para         parallel degree
    langcol      language column
    fmtcol       format column name
    csetcol      charset column name
    configcol    charset column name
    idxmem       index memory
    datastore    datastore pref name
    filter       filter pref name
    section      section group pref name
    lexer        lexer pref name
    wordlist     wordlist pref name
    stoplist     stoplist pref name
    storage      storage pref name
    txntional    transactional pref name
    tree         supports ctx_tree
    async_upd    asynchronous update
    opt_type     auto optimize type
    opt_interval repeat interval of auto optimize
    opt_paradegree parallel degree of background auto optimize
    no_r         no $R

  NOTES
 
  EXCEPTIONS
 
  RETURNS
 
*/
PROCEDURE IndexCreate(
  ia          in  sys.odciindexinfo,
  owner       in  varchar2,
  index_name  in  varchar2,
  index_part  in  varchar2,
  table_owner in  varchar2,
  table_name  in  varchar2,
  table_part  in  varchar2,
  column_name in  varchar2,
  column_type in varchar2,
  call_prop   in  number,
  populate    in  boolean,
  para        in  number,
  langcol     in  varchar2,
  fmtcol      in  varchar2,
  csetcol     in  varchar2,
  idxmem      in  number,
  datastore   in  varchar2,
  filter      in  varchar2,
  section     in  varchar2,
  lexer       in  varchar2,
  wordlist    in  varchar2,
  stoplist    in  varchar2,
  storage     in  varchar2,
  txntional   in  varchar2,
  sync_type   in  varchar2,
  sync_memory     in  varchar2,
  sync_paradegree in  number,
  sync_interval   in  varchar2,
  tree            in  boolean,
  sync_dpl        in  boolean,
  configcol       in  varchar2,
  async_upd       in  boolean,
  simplesyntax    in  number,
  dataguide       in  varchar2, 
  search_on       in  varchar2,
  opt_type        in  varchar2,
  opt_interval    in  varchar2,
  opt_paradegree  in number,
  no_r            in  boolean
);

/*----------------------- IndexDrop  -------------------------*/
/*
  NAME
    IndexDrop

  DESCRIPTION
    drop an index

  ARGUMENTS
    ia           index info
*/
PROCEDURE IndexDrop(
  ia          in  sys.ODCIIndexInfo,
  owner       in  varchar2, 
  index_name  in  varchar2,
  call_prop   in  number
);

/*----------------------- IndexTruncate  ---------------------*/
/*
  NAME
    IndexTruncate

  DESCRIPTION
    truncate an index

  ARGUMENTS
    ia           index info
    owner        index owner
    index_name   index name
    ixp_name     index partition name
    call_prop    call property
*/
PROCEDURE IndexTruncate(
  ia           in sys.odciindexinfo,
  owner        in varchar2,
  index_name   in varchar2,
  ixp_name     in varchar2,
  call_prop    in number

);

/*----------------------- IndexTransport  -----------------------*/
/*
  NAME
    IndexTransport

  DESCRIPTION
    transport tablespace support 

  ARGUMENTS
    owner        index owner
    index_name   index name
    index_part   index partition name
    table_owner  table owner
    table_name   table name
    table_part   table partition name

  NOTES

  EXCEPTIONS

  RETURNS

*/
PROCEDURE IndexTransport(
  owner       in  varchar2,
  index_name  in  varchar2,
  index_part  in  varchar2,
  table_owner in  varchar2,
  table_name  in  varchar2,
  table_part  in  varchar2,
  IndexInfoFlags in number,
  CallProperty   in number
);

/*----------------------- PartitionSplit  -----------------------*/
/*
  NAME
    PartitionSplit

  DESCRIPTION
    split one partition into two

  ARGUMENTS
    ia          ODCIIndexInfo for the spliting partition
    part1       ODCIPartInfo for resulting partition
    part2       ODCIPartInfo for resulting partition


  NOTES

  EXCEPTIONS

  RETURNS

*/
PROCEDURE PartitionSplit(
  ia              in  sys.odciindexinfo,
  part1           in  sys.odcipartinfo,     
  part2           in  sys.odcipartinfo
);

/*----------------------- PartitionMerge  -----------------------*/
/*
  NAME
    PartitionMerge

  DESCRIPTION
    split one partition into two

  ARGUMENTS
    ia          ODCIIndexInfo for the resulting partition
    part1       ODCIPartInfo for one of the merging partitions
    part2       ODCIPartInfo for one of the merging  partition


  NOTES

  EXCEPTIONS

  RETURNS

*/
PROCEDURE PartitionMerge(
  ia              in  sys.odciindexinfo,
  part1           in  sys.odcipartinfo,     
  part2           in  sys.odcipartinfo      
);

/*----------------------- PartitionDrop  -----------------------*/
/*
  NAME
    PartitionDrop

  DESCRIPTION
    Drop one partition 

  ARGUMENTS
    ia          ODCIIndexInfo for the resulting partition
    idxid       index id
    p_ixpid     partition id
    p_dropAll   flag indicates if drop all index tables


  NOTES

  EXCEPTIONS

  RETURNS

*/
PROCEDURE PartitionDrop(
  ia              in  sys.odciindexinfo,
  idxid           in number,
  p_ixpid         in number default null,
  p_dropAll       in boolean default FALSE
);

/*----------------------- PartitionExchange  -----------------------*/
/*
  NAME
    PartitionExchange

  DESCRIPTION
    Swap a partition with a table 

  ARGUMENTS
    ia          ODCIIndexInfo for the partition index to be exchanged 
    ia1         ODCIIndexinfo for the index on the table 


  NOTES

  EXCEPTIONS

  RETURNS

*/
PROCEDURE PartitionExchange(
  ia              in  sys.odciindexinfo,
  ia1             in  sys.odciindexinfo
);

/*----------------------- IndexRename  ---------------------*/
/*
  NAME
    IndexRename

  DESCRIPTION
    rename an index

  ARGUMENTS
    ia           index info
    owner        index owner
    index_name   index name
    new_name     new name
*/
PROCEDURE IndexRename(
  ia           in sys.odciindexinfo,
  owner        in varchar2,
  index_name   in varchar2,
  new_name     in varchar2
);

/*----------------------- IndexColRename  ---------------------*/
/*
  NAME
    IndexColRename

  DESCRIPTION
    rename an index column 

  ARGUMENTS
    ia           index info
    owner        index owner
    index_name   index name
    new_name     new name
*/
PROCEDURE IndexColRename(
  ia           in sys.odciindexinfo,
  owner        in varchar2,
  index_name   in varchar2,
  new_name     in varchar2
);

/*----------------------- IndexTabRename  ---------------------*/
/*
  NAME
    IndexTabRename

  DESCRIPTION
    rename base table

  ARGUMENTS
    ia           index info
    owner        index owner
    index_name   index name
    new_name     new name
*/
PROCEDURE IndexTabRename(
  ia           in sys.odciindexinfo,
  owner        in varchar2,
  index_name   in varchar2,
  new_name     in varchar2
);

/*----------------------- IndexReplace  -------------------------*/
/*
  NAME
    IndexReplace

  DESCRIPTION
    rebuild an index, replacing preferences as needed

  ARGUMENTS
    ia           index info
    idx          index record
    idxmem       index memory
    para         parallel degree
    langcol      language column
    fmtcol       format column name
    csetcol      charset column name
    configcol    configuration column name
    datastore    datastore pref name
    filter       filter pref name
    section      section group pref name
    lexer        lexer pref name
    wordlist     wordlist pref name
    stoplist     stoplist pref name
    storage      storage pref name
    isonline     is online ? 
    sync_dpl     direct path loading?
    section_name section name
    opt_type     auto bg optimize type
    opt_interval repeat interval of auto bg optimize
    opt_paradegree parallel degree of auto bg optimize
*/
PROCEDURE IndexReplace(
  ia          in  sys.ODCIIndexInfo,
  idx         in out nocopy  dr_def.idx_rec,
  idxmem      in  number,
  para        in  number,
  langcol     in  varchar2,
  fmtcol      in  varchar2,
  csetcol     in  varchar2,
  datastore   in  varchar2,
  filter      in  varchar2,
  section     in  varchar2,
  lexer       in  varchar2,
  wordlist    in  varchar2,
  stoplist    in  varchar2,
  storage     in  varchar2,
  txntional   in  varchar2,
  sync_type   in  varchar2,
  sync_memory     in   varchar2,
  sync_paradegree in   number,
  sync_interval   in   varchar2,
  isonline    in  boolean default FALSE,
  metadataonly in boolean default FALSE,
  populate     in boolean default TRUE,
  sync_dpl     in boolean default FALSE,
  section_name in varchar2 default NULL,
  configcol   in  varchar2 default NULL,
  async_upd   in  boolean default NULL,
  dataguide   in  varchar2 default NULL,
  search_on   in  varchar2 default NULL,
  opt_type        in  varchar2 default NULL,
  opt_interval    in  varchar2 default NULL,
  opt_paradegree  in  number default 1,
  no_r            in  boolean default NULL
);

/*----------------------- IndexPartReplace  -------------------------*/
/*
  NAME
    IndexPartReplace

  DESCRIPTION
    rebuild a index partition, replacing preferences as needed

  ARGUMENTS
    ia           index info
    idx          index record
    ixp          index partition
    idxmem       index memory
    storage      storage pref name
    para         parallel degree
*/
PROCEDURE IndexPartReplace(
  ia          in  sys.ODCIIndexInfo,
  idx         in  dr_def.idx_rec,
  ixp         in  dr_def.ixp_rec,
  idxmem      in  number,
  storage     in  varchar2,
  para        in  number,
  sync_type   in  varchar2,
  sync_memory     in   varchar2,
  sync_paradegree in   number,
  sync_interval   in   varchar2,
  isonline     in boolean default FALSE,
  metadataonly in boolean default FALSE,
  populate     in boolean default TRUE,
  sync_dpl     in boolean default FALSE,
  opt_type        in  varchar2 default NULL,
  opt_interval    in  varchar2 default NULL,
  opt_paradegree  in  number   default 1
);

/*----------------------- IndexResume  -------------------------*/
/*
  NAME
    IndexResume

  DESCRIPTION
    resume index creation

  ARGUMENTS
    ia           index info
    idx          index record
    para         parallel degree
    idxmem       index memory
    isOnline     is online?
    isreplace    called from replace
*/
PROCEDURE IndexResume(
  ia          in  sys.ODCIIndexInfo,
  idx         in  dr_def.idx_rec,
  para        in  number,
  idxmem      in  number,
  isonline    in  boolean default FALSE,
  isreplace   in  boolean default FALSE,
  populate     in boolean default TRUE
);

/*----------------------- IndexPartResume  -------------------------*/
/*
  NAME
    IndexPartResume

  DESCRIPTION
    resume index creation on a partition

  ARGUMENTS
    ia           index info which also has partition info
    idx          index record
    para         parallel degree
    idxmem       index memory
*/
PROCEDURE IndexPartResume(
  ia          in  sys.ODCIIndexInfo,
  idx         in  dr_def.idx_rec,
  para        in  number,
  idxmem      in  number,
  isOnline    in  boolean default FALSE,
  isReplace   in  boolean default FALSE,
  populate    in  boolean default TRUE
);

/*----------------------- IndexOptimize  -------------------------*/
/*
  NAME
    IndexOptimize

  DESCRIPTION
    optimize the index

  ARGUMENTS
    idx          index record
    ixpname      partition name
    operation    FAST, FULL, or TOKEN
    maxtime      maxtime for gc
    token	 text token string 
    maxtokens    number of tokens to optimize
    section_type called to optimize a specific section type
    opcreate     called during create index
*/
PROCEDURE IndexOptimize(
  idx          in  dr_def.idx_rec,
  ixpname      in  varchar2,
  operation    in  varchar2,
  maxtime      in  number,
  token        in  varchar2,
  ttype        in  number default 0,
  pdegree      in  number default 1,
  memory       in  number default 0,
  background   in  number default 0,
  maxtokens    in  number default 0,
  section_type in number default null,
  opcreate     in  boolean default FALSE
);

TYPE popcurtyp is ref cursor return ctxsys.dr$number_sequence%rowtype;

FUNCTION IndexOptimizeParFn(
  crsr         in popcurtyp,
  idxownid     in number,
  idxowner     in varchar2,
  idxname      in varchar2,
  ixpname      in varchar2,
  shadow_itab  in varchar2,
  nextid       in number,
  optmode      in number,
  maxtime      in number,
  logfile      in varchar2,
  maxhash      in number,
  ttype        in number,
  background   in number,
  section_type in number default 0
) return varchar2;

/*----------------------- SplitDollari  -------------------------*/
/*
  NAME
    SplitDollari

  DESCRIPTION
    Split the $I table into multiple $I tables

  ARGUMENTS
    idx          index record
    ixpname      the name of the partition whose $I table we are 
                 splitting(the $I is not modified)
    mapping_tab  the table that maps rowids to partition names
    name_prefix  the name of the output table in case of less than
                 two partitions, a name to which the partition 
                 name gets appended otherwise: 
                 name_prefix||'_'||part_name
    tspace       the name of the tablespace where additional 
                 mapping tables will be created (for cleanup 
                 purposes in case of core dump)
*/
PROCEDURE SplitDollari(
  idx         in  dr_def.idx_rec,
  ixpname     in  varchar2,
  mapping_tab in  varchar2,
  name_prefix in  varchar2,
  tspace      in  varchar2 default null
);

/*----------------------- IndexSync  -------------------------*/
/*
  NAME
    IndexSync

  DESCRIPTION
    sync the index

  ARGUMENTS
    idx          index record
    idxmem       index memory
    ixpname      index partition name
    direct_path  should we use direct-path inserts ?
*/
PROCEDURE IndexSync(
  idx         in  dr_def.idx_rec,
  ixpname     in  varchar2,
  idxmem      in  number,
  parallel_degree in number default 1,
  direct_path in  boolean default false,
  maxtime     in  number,
  locking     in  number
);

/*----------------------- LockBaseTable  -------------------------*/
/*
  NAME
    LockBaseTable

  DESCRIPTION
    lock the base table

  ARGUMENTS
    table_own    name of table owner
    table_name   name of table
    table_part   name of table partition (if any)
*/
PROCEDURE LockBaseTable(
  table_own   in varchar2,
  table_name  in varchar2,
  table_part  in varchar2 default NULL
);

PROCEDURE ProcessOnlinePending (
  table_own        in varchar2,
  table_name       in varchar2, 
  index_own        in varchar2,
  index_name       in varchar2,
  polid            in number,
  is_part          in boolean,
  is_online        in boolean,
  is_alter         in boolean,
  table_partition  in varchar2 default NULL,
  index_partition  in varchar2 default NULL
) ;

/*----------------------- CDIUpdate  -------------------------*/

PROCEDURE CDIUpdate(
  polid       in number, 
  ia          in sys.odciindexinfo,
  env         in sys.ODCIEnv,
  ridlist     in sys.odciridlist,
  oldvallist  in sys.odcicolarrayvallist,
  newvallist  in sys.odcicolarrayvallist
);

PROCEDURE RIOCleanup(
  idx_shadow  in dr_def.idx_rec
);

PROCEDURE PartCleanup(
  idx_shadow   dr_def.idx_rec,
  ixp_shadow   dr_def.ixp_rec,
  p_sysPart    in boolean default FALSE
);

FUNCTION CursorToBitVector(
  crsr    in popcurtyp,
  numbits in number) RETURN varchar2;

PROCEDURE add_big_io(
  idx in dr_def.idx_rec
);

PROCEDURE remove_big_io( 
  idx in dr_def.idx_rec
);

PROCEDURE add_separate_offsets(
  idx in dr_def.idx_rec
);

PROCEDURE add_stage_itab(
  idx in dr_def.idx_rec,
  ixp       in dr_def.ixp_rec default NULL
);

PROCEDURE remove_stage_itab(
  idx in dr_def.idx_rec,
  ixp       in dr_def.ixp_rec default NULL
);

/*--------------------------- field_to_mdata -------------------------------*/
/* convert a field section to mdata */
PROCEDURE field_to_mdata(
  idx in dr_def.idx_rec,
  fsec in varchar2,
  read_only in boolean
);

/*------------------------ IndexMapLanguagesDriver -------------------------*/
/* Driver for IndexMapLanguages - partitioned and non partitioned case. */
procedure IndexMapLanguagesDriver(
  idx      in dr_def.idx_rec
);

/*--------------------------- IndexMapLanguages ---------------------------*/
/* Map language column in base table to mdata sections */
procedure IndexMapLanguages(
  idx      in dr_def.idx_rec,
  ixp      in dr_def.ixp_rec,
  pdegree  in number,
  flags    in binary_integer,
  sectyp   in binary_integer,
  hash_usable in number
);

/*---------------------- AddDocLexerMDATATokens ------------------------*/
/* Add DR$ML MDATA Tokens to $I */
PROCEDURE AddDocLexerMDATATokens(
  ia       in sys.ODCIIndexInfo,
  idx      in dr_def.idx_rec
);

/*---------------------- RemDocLexerMDATATokens ------------------------*/
/* Remove DR$ML MDATA Tokens from $I(s) */
PROCEDURE RemDocLexerMDATATokens(
  ia       in sys.ODCIIndexInfo,
  idx in dr_def.idx_rec
);

/*--------------------------- idx_add_slx ------------------------------*/
/* Add sublexer to the Index */
PROCEDURE idx_add_slx(
  ia        in sys.ODCIIndexInfo,
  idx       in dr_def.idx_rec,
  sub_lexer in varchar2,
  language  in varchar2,
  alt_value in varchar2,
  language_dependent in boolean default TRUE
);

/*--------------------------- idx_rem_slx ------------------------------*/
/* Remove sublexer from the Index */
PROCEDURE idx_rem_slx(
  ia        in sys.ODCIIndexInfo,
  idx       in dr_def.idx_rec,
  sub_lexer in varchar2
);

/*--------------------------- idx_add_sw ------------------------------*/
/* Add stopword to the Index */
PROCEDURE idx_add_sw(
  ia        in sys.ODCIIndexInfo,
  idx       in dr_def.idx_rec,
  stopword  in varchar2,
  language  in varchar2,
  language_dependent in boolean default TRUE,
  secname   in varchar2
);

/*--------------------------- idx_rem_sw ------------------------------*/
/* Remove stopword from the Index */
PROCEDURE idx_rem_sw(
  ia        in sys.ODCIIndexInfo,
  idx       in dr_def.idx_rec,
  stopword    in  varchar2,
  language    in  varchar2,
  for_all     in boolean default FALSE
);

/*--------------------------- repopulate_dollarn ---------------------------*/
/* repopulate_dollarn - repopulate $N as opposite of $K */
PROCEDURE repopulate_dollarn(
  idx       in dr_def.idx_rec,
  ixp       in dr_def.ixp_rec
);

/*------------------------------ set_read_mode -----------------------------*/
/* set_read_mode - Set read mode to TRUE/FALSE, for given partition */
PROCEDURE set_read_mode(
  ia        in sys.ODCIIndexInfo,
  idx       in dr_def.idx_rec,
  ixp       in dr_def.ixp_rec default NULL,
  read_mode in boolean
);
/*
PROCEDURE validate_and_get_options(table_name  in varchar2, 
                                   column_name in varchar2,
                                   dataguide   in varchar2,
                                   search_on   in varchar2,
                                   new_section in out varchar2,
                                   new_neverpopulate in out boolean);
*/

PROCEDURE create_search_tables(idx in dr_def.idx_rec);
PROCEDURE create_dataguide_table(idx in dr_def.idx_rec);
PROCEDURE drop_dataguide_table(idx in dr_def.idx_rec);

/*----------------------- PartitionAdd  -----------------------------------*/

PROCEDURE PartitionAdd(
  ia              in  sys.ODCIIndexInfo,
  owner           in  varchar2,
  index_name      in  varchar2,
  index_partition in  varchar2,
  table_owner     in  varchar2,
  table_name      in  varchar2,
  table_partition in  varchar2
);

/*--------------------- ContextOldInsert ----------------------------------*/
FUNCTION ContextOldInsert(
  ia      in sys.ODCIIndexInfo,
  ridlist in sys.ODCIRidList,
  env     in sys.ODCIEnv
) return number is language C
name "insert"
library dr$lib
with context
parameters (
  context,
  ia,
  ia INDICATOR STRUCT,
  ridlist,
  ridlist INDICATOR,
  env,
  env INDICATOR STRUCT,
  return OCINumber
);

/*--------------------- ContextOldDelete ----------------------------------*/
FUNCTION ContextOldDelete(
  ia      in sys.ODCIIndexInfo,
  ridlist in sys.ODCIRidList,
  env     in sys.ODCIEnv
) return number is language C
name "delete"
library dr$lib
with context
parameters (
  context,
  ia,
  ia INDICATOR STRUCT,
  ridlist,
  ridlist INDICATOR,
  env,
  env INDICATOR STRUCT,
  return OCINumber
);

/*--------------------- ContextOldUpdate ----------------------------------*/
FUNCTION ContextOldUpdate(
  ia      in sys.ODCIIndexInfo,
  ridlist in sys.ODCIRidList,
  env     in sys.ODCIEnv
) return number is language C
name "update"
library dr$lib
with context
parameters (
  context,
  ia,
  ia INDICATOR STRUCT,
  ridlist,
  ridlist INDICATOR,
  env,
  env INDICATOR STRUCT,
  return OCINumber
);

/*--------------------------- add_bg_optimize ----------------------------*/
/* add a background job of optimize index / partition */
procedure add_bg_optimize(p_idx_name    in varchar2,
                          p_ixp_name    in varchar2 default null,
                          p_optlevel    in varchar2,
                          p_para_degree in number default 1, -- parallel degree
                          p_repeat_interval in varchar2 default null
);

/*--------------------------- drop_bg_optimize ----------------------------*/
/* drop background jobs 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
);

end drvddl;
/

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO