MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/ctx/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/ctx/admin/drvdml.pkh

rem 
rem Copyright (c) 2002, 2017, Oracle and/or its affiliates. 
rem All rights reserved.
rem
rem    NAME
rem      drvdml.pkh - DR cartridge internal, inVoker's rights DML services
rem
rem    DESCRIPTION
rem      functions called by ConText cartridge routines to perform 
rem      various DML functionalities
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 
rem    BEGIN SQL_FILE_METADATA
rem      SQL_SOURCE_FILE: ctx_src_2/src/dr/admin/drvdml.pkh
rem      SQL_SHIPPED_FILE: ctx/admin/drvdml.pkh
rem      SQL_PHASE: DRVDML_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    demukhin     10/02/17 - bug 26855855: $U is not cleaned after sync
rem    demukhin     06/20/17 - bug 26051570: keep $R for legacy indexes
rem    aczarlin     06/09/17 - Bug 25102906: inner lock for ctxagg
rem    pkosaraj     03/09/17 - Bug 24309387: non const global var
rem    aczarlin     01/20/17 - bug 25423433 change ctxagg lock to aggmerge
rem    demukhin     01/17/17 - prj 68638: remove $R
rem    aczarlin     11/13/15 - bug 22175325 ctxagg lock
rem    surman       01/23/15 - 20411134: Add SQL metadata tags
rem    gauryada     08/05/14 - Bug#19366739
rem    shorwitz     01/23/14 - Enable 128 byte database objects
rem    shorwitz     08/19/13 - Bug 14658292: increase memory size limit
rem    surman       03/15/13 - 16473661: Common start and end scripts
rem    boxia        01/16/13 - Bug 13990319
rem    rpalakod     10/01/11 - Range postings
rem    rkadwe       04/13/11 - Btree Backed SDATA
rem    rpalakod     06/03/10 - Bug 9571600
rem    rkadwe       03/23/10 - XbranchMerge rkadwe_bug-8429026 from main
rem    rpalakod     09/08/09 - tdata_qry_phase4
rem    nenarkhe     09/08/09 - AddRemOneMDATA
rem    nenarkhe     08/20/09 - MVDATA update stubs
rem    rkadwe       12/11/08 - upd_sdata added
rem    surman       12/09/08 - 7540290: binary_integer to number
rem    surman       11/05/08 - 6703140: Add release_on_commit to
rem                            lock_opt_rebuild
rem    surman       01/11/07 - 5364449: Make ProcessWaiting public
rem    surman       01/10/07 - 5364449: Remove csync
rem    surman       09/14/06 - 5079472: Add lock modes
rem    surman       08/23/06 - 5079472: Add lock_mode to lock_opt_rebuild
rem    surman       06/29/06 - 5079472: Add lock_opt_rebuild 
rem    gkaminag     10/26/05 - mdata cdi update 
rem    gkaminag     10/13/05 - incremental indexing enhancements 
rem    smuralid     01/15/04 - add another overload of MaintainKtab 
rem    gkaminag     11/18/03 - bug 3237317 
rem    smuralid     10/09/03 - ProcessDML: direct_path defaults to false 
rem    gkaminag     10/21/03 - mdata phase 2 
rem    yucheng      06/12/03 - 
rem    yucheng      05/27/03 - add auto_sync_index
rem    smuralid     04/03/03 - post-pass for $K maintenance
rem    gkaminag     09/24/02 - security phase 3
rem    gkaminag     06/19/02 - gkaminag_security_ph1_020603
rem    gkaminag     06/03/02 - creation 

@@?/rdbms/admin/sqlsessstart.sql

create or replace package drvdml authid current_user as

  -- CTXCAT holding variables
  type vctab is table of drvutl.dr_id index by binary_integer;
  c_vctab           vctab;
  c_cttab           vctab;

  type numtab is table of number index by binary_integer;
  c_numtab          numtab;

  type dttab is table of date index by binary_integer;
  c_dttab           dttab;

  type cntab is table of drvutl.dr_longbuf index by binary_integer;
  c_cntab           cntab;

  c_text_vc2        drvutl.dr_maxbuf;
  c_text_clob       clob;
  c_rowid           rowid;

  type updtab is table of boolean index by binary_integer;
  c_updtab          updtab;

  -- 5079472: Mirror dbms_lock constants here because dbms_lock may not
  -- be granted to public.
  s_mode constant number := dbms_lock.s_mode;
  x_mode constant number := dbms_lock.x_mode;

/*--------------------------- ProcessWaiting ------------------------------*/

procedure ProcessWaiting (
  p_idxtype in binary_integer,
  p_idxid   in number,
  p_idxown  in varchar2,
  p_idxname in varchar2,
  p_ixpid   in number,
  p_ixpname in varchar2
);

/*--------------------------- ProcessDML ------------------------*/
/*
  NAME
    ProcessDML

  DESCRIPTION
    do a sync

  ARGUMENTS
    CID             in     - column to work on 
    parallel_degree in     - parallel degree
    direct_path     in     - use direct-path inserts ?

*/
procedure ProcessDML (
  p_idxid  in  number,
  p_ixpid  in  number,
  p_idxmem in  number,
  p_pardeg in  binary_integer default 1,
  p_direct_path in boolean default false,
  p_maxtime in binary_integer default 2147483647
);

/*--------------------------- MaintainKTab -------------------------*/
/*
  NAME
    MaintainKTab

  DESCRIPTION
    update the $K table after index creation/sync

  ARGUMENTS
    idx               in     - the index
    ixp               in     - the partition of the index 
    p_startDocid      in     - docid to start from
    p_parallel_degree in     - parallel degree

*/
procedure MaintainKTab (
  idx         in  dr_def.idx_rec,
  ixp         in  dr_def.ixp_rec,  
  p_startDocid  in  number default null,
  p_parallel_degree in number default 1
);
/*--------------------------- MaintainKTab -------------------------*/
/*
  NAME
    MaintainKTab

  DESCRIPTION
    update the $K table after index creation/sync

  ARGUMENTS
    p_idxid           in     - the index id
    p_ixpid           in     - the partition id
    p_startDocid      in     - docid to start from
    p_parallel_degree in     - parallel degree
*/
procedure MaintainKTab (
  p_idxid           in number,
  p_ixpid           in number,
  p_startDocid      in  number default null,
  p_parallel_degree in number default 1
);

/*--------------------------- DeletePending ------------------------*/

procedure DeletePending (
  p_idxid  in number,
  p_ixpid  in number,
  p_rids   in varchar2,
  p_utab   in varchar2,
  p_pname  in varchar2
);

/*----------------------------- CleanDML ---------------------------*/

procedure CleanDML (
  p_idxid  in number,
  p_ixpid  in number,
  p_tabid  in number
);

/*-------------------------- SetLockFailed -------------------------*/

procedure SetLockFailed (
  p_idxid  in number,
  p_ixpid  in number,
  p_rid    in rowid
);

/*--------------------------- ctxcat_dml ----------------------------*/

procedure ctxcat_dml(
  idx_owner in varchar2, 
  idx_name  in varchar2,
  doindex   in boolean,
  updop     in boolean
);

/*----------------------- auto_sync_index ------------------------*/

PROCEDURE auto_sync_index(
  idx_name  in  varchar2 default NULL,
  memory    in  varchar2 default NULL,
  part_name in  varchar2 default NULL,
  parallel_degree in number default 1,
  logfile   in  varchar2 default NULL,
  events    in  number   default NULL
);

/*----------------------- com_sync_index -------------------------*/
PROCEDURE com_sync_index(
  idx_name  in  varchar2 default null,
  memory    in  varchar2 default null,
  part_name in  varchar2 default null
);

/*----------------------- add_rem_mdata --------------------------*/

PROCEDURE add_rem_mdata(
  add_rem      in varchar2,
  idx_name     in varchar2,
  section_name in varchar2,
  mdata_values in sys.odcivarchar2list,
  mdata_rowids in sys.odciridlist,
  part_name    in varchar2
);

/* 5364449: Removed csync since it is no longer used */

/*------------------- PopulatePending -----------------------------*/

PROCEDURE PopulatePending(
  idx  in dr_def.idx_rec,
  ixpname in varchar2
);

/*------------------- UpdateMDATA -----------------------------*/

PROCEDURE UpdateMDATA(
  itab     in varchar2,
  ktab     in varchar2,
  mdata_id in binary_integer,  
  coltype  in varchar2,
  rid      in varchar2,
  oldval   in sys.anydata,
  newval   in sys.anydata,
  gtab     in varchar2 default null
);

/* Following 2 routines added for bug 5079472 */
/*------------------- lock_opt_rebuild ------------------------*/
PROCEDURE lock_opt_rebuild(
  cid        in number,
  pid        in number,
  lock_mode  in number,
  timeout    in number,
  release_on_commit in boolean default FALSE
);

/*----------------- unlock_opt_rebuild ------------------------*/
PROCEDURE unlock_opt_rebuild;

/*--------------------------- lock_sync_upd -----------------*/
PROCEDURE lock_sync_upd(
  cid        in number,
  pid        in number,
  l_mode IN  INTEGER,
  release_on_commit in boolean default FALSE
);

/*----------------- unlock_sync_upd ------------------------*/
PROCEDURE unlock_sync_upd;

/*--------------------------- lock_opt_mvdata -----------------*/
PROCEDURE lock_opt_mvdata(
  cid in number,
  pid in number
);

/*------------------- lock_opt_aggmerge  ----------------------*/
function lock_opt_aggmerge(
  idx        in number,
  pid        in number,
  timeout    in number,
  lockmode   in number
) return number;

/*---------------------- convert_aggmerge ----------------------*/

function convert_aggmerge(
  idx        in number,
  pid        in number,
  timeout    in number,
  lockmode   in number
) return number;


/*------------------ unlock_aggmerge ---------------*/
function unlock_aggmerge(
  idx in number,
  ignore_errors in number
) return number;

/*------------------- lock_opt_agginner  ---------------------*/
function lock_opt_agginner(
  idx        in number,
  pid        in number,
  timeout    in number,
  lockmode   in number
) return number;

/*------------------ unlock_agginner ---------------*/
function unlock_agginner(
  idx in number,
  ignore_errors in number
) return number;


/*-------------------- upd_sdata  -----------------------------*/
/*
  NAME
    upd_sdata

  DESCRIPTION
    update sdata section value

  ARGUMENTS
    idx_name     - index name
    section_name - SDATA section name
    sdata_value  - sdata value
    sdata_rowid  - rowid
    part_name    - partition name

  NOTES

  EXCEPTIONS
*/

PROCEDURE upd_sdata(
  idx_name      in varchar2,
  section_name  in varchar2,
  sdata_value   in sys.anydata,
  sdata_rowid   in rowid,
  part_name     in varchar2 default NULL
);

/*----------------------- ins_del_mvdata --------------------------*/
/*
  NAME
    ins_del_mvdata

  DESCRIPTION
    update a set of docids with given MVDATA values

  ARGUMENTS
    ins_del       - dml mode flag (INS, DEL, UPD)
    idx_name      - index name
    section_name  - MVDATA section name
    mvdata_values - mvdata values
    mvdata_rowids - rowids
    part_name     - partition name

  NOTES

  EXCEPTIONS
*/

PROCEDURE ins_del_mvdata(
  ins_del      in varchar2,
  idx_name     in varchar2,
  section_name in varchar2,
  mvdata_values in sys.odcinumberlist,
  mvdata_rowids in sys.odciridlist,
  part_name    in varchar2
);

/*----------------- AddRemOneMDATA ------------------------------------*/

procedure AddRemOneMDATA(
  itab    in varchar2,
  docid   in number,
  mdataid in binary_integer,
  addrem  in binary_integer,
  value   in varchar2,
  gtab    in varchar2 default null
);

/*------------------------- idx_populate_mode ------------------------- */
FUNCTION idx_populate_mode
return number;

PROCEDURE AddRemOneSDATA(
  sntab   in varchar2,
  dtype   in varchar2,
  docid   in number,
  sdataid in binary_integer,
  addrem  in binary_integer,
  value   in sys.anydata
);

PROCEDURE add_rem_sdata(
  add_rem      in varchar2,
  idx_name     in varchar2,
  section_name in varchar2,
  sdata_value in sys.anydata,
  sdata_rowid in rowid,
  part_name    in varchar2
);
end drvdml;
/

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO