MINI MINI MANI MO
rem
rem $Header: ctx_src_2/src/dr/admin/dridml.pkh /main/36 2017/02/06 21:05:00 stanaya Exp $
rem
Rem Copyright (c) 1991, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem NAME
Rem dridml.pkh - spec for DML queue server side functions
Rem DESCRIPTION
Rem
Rem RETURNS
Rem
Rem NOTES
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: ctx_src_2/src/dr/admin/dridml.pkh
Rem SQL_SHIPPED_FILE: ctx/admin/dridml.pkh
Rem SQL_PHASE: DRIDML_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 rodfuent 11/03/16 - Bug 25028151: composite partitioning for ctx_v2
Rem surman 01/23/15 - 20411134: Add SQL metadata tags
Rem surman 03/15/13 - 16473661: Common start and end scripts
Rem ssethuma 06/09/10 - Bug 9311815
Rem surman 05/27/10 - 9523887: Make dr$waiting an IOT
Rem surman 12/09/08 - 7540290: binary_integer to number
Rem surman 02/05/07 - 5364449: Remove get_dml
Rem yucheng 12/08/05 - add create_index_online
Rem gkaminag 10/13/05 - incremental indexing
Rem gkaminag 11/19/03 - bug 3237317
Rem smuralid 10/09/03 - process_dml: direct_path defaults to false
Rem yucheng 08/12/03 - local create index online support
Rem smuralid 04/21/03 - process_dml: new parameter 'direct_path'
Rem gkaminag 10/03/02 - security phase 3
Rem gkaminag 09/24/02 - security phase 3
Rem gkaminag 06/07/02 - security overhaul phase 1.
Rem yucheng 12/24/01 - online_support
Rem yucheng 10/12/01 - parallel sync
Rem gkaminag 03/16/01 - bug 1691657
Rem gkaminag 09/06/00 - partition support
Rem gkaminag 08/15/00 - partition support in sync
Rem gkaminag 08/14/00 - partitioning support
Rem gkaminag 08/10/00 - partitioning support
Rem salpha 06/26/00 - ctxrule implementation
Rem gkaminag 03/30/00 - ctxcat DML
Rem gkaminag 02/18/99 - optional DML unlocking in dridml.deregister
Rem gkaminag 08/27/98 - add dml method for ctxsrv dml
Rem gkaminag 05/11/98 - clean_dml interface change
Rem gkaminag 05/04/98 - batch_done problems
Rem dyu 02/27/98 - remove build_dml
Rem gkaminag 02/26/98 - no need for global lock
Rem gkaminag 02/24/98 - new dml queue
Rem gkaminag 07/15/97 - new DML queue
Rem gkaminag 05/16/97 - add test flag
Rem wkeese 01/10/95 - Creation
@@?/rdbms/admin/sqlsessstart.sql
create or replace package dridml
is
LOCK_WAIT constant number := null;
LOCK_NOWAIT constant number := 0;
IGNORE_ERRORS constant boolean := TRUE;
/*--------------------------- deregister --------------------------------*/
/*
NAME
DEREGISTER(cid) - deregister the given column with DML queue,
DESCRIPTION
This procedure discontinues queueing of updates to the DML
queue. It also flushes any pending requests, and waits for any
in-progress requests to complete
ARGUMENTS
CID - the column id to register
unlock - unlock DML afterwards?
zap_online_pending -- clear dr$online_pending
*/
procedure DEREGISTER(cid number, unlock in boolean default TRUE,
part_id number default 0,
part_name in varchar2 default null,
zap_online_pending in boolean default TRUE);
/*------------------------------ lock_dml --------------------------------*/
/*
NAME
lock_dml
DESCRIPTION
lock dml for a column
ARGUMENTS
cid -- cid to lock
timeout -- if non-null, timeout
pid -- partition id
RETURNS
0 on success, 1 on timeout
NOTES
This does not block out incoming DML reindex requests.
*/
function lock_dml_ret(
cid in number,
pid in number,
timeout in number
) return number;
procedure lock_dml(
cid in number,
pid in number,
timeout in number
);
/*------------------------- lock_dml_all_part ----------------------------*/
/* NOTE: gets multiple locks. If fails, it's up to calling procedure to */
/* release any locks it may have gotten */
procedure lock_dml_all_part(
cid in number
);
/*----------------------------- unlock_dml ------------------------------*/
/*
NAME
UNLOCK_DML
DESCRIPTION
Unlock the DML queue
ARGUMENTS
ignore_errors - don't flag any errors
*/
procedure unlock_dml(
ignore_errors in boolean default false
);
/*------------------------ unlock_dml_all_part ---------------------------*/
procedure unlock_dml_all_part(
ignore_errors in boolean default false
);
/* 5364449: Removed get_dml */
/*--------------------------- ClearOnlinePending ------------------------*/
procedure ClearOnlinePending(
p_idxid in number,
index_partition in varchar2 default NULL
);
/*--------------------------- ExchangePending ---------------------------*/
/* exchange all rows in dr$pending, dr$waiting, etc. for exchange partition */
procedure ExchangePending(
p_idxid1 in number,
p_ixpid1 in number,
p_idxid2 in number
);
/*------------------------ ExchangePendingComp --------------------------*/
/* exchange all rows in dr$pending, dr$waiting, etc. for exchange of
composite partition */
procedure ExchangePendingComp(
p_idxid1 in number,
p_ixpid1 in number,
p_idxid2 in number,
p_ixpid2 in number
);
/*------------------------- delete_dup_waiting ----------------------------*/
/* eliminate duplicate dr$waiting rows */
procedure delete_dup_waiting(cid in number, pid in number);
/*------------------------- open_waiting_cur ----------------------------*/
/* open cursor on dr$waiting */
procedure open_waiting_cur(cid in number, pid in number);
/*------------------------- fetch_waiting_cur ----------------------------*/
/* fetch row from waiting cursor */
function fetch_waiting_cur(rid out rowid, wrid out urowid) return number;
/*------------------------- insert_pending -------------------------------*/
/* insert a row into dr$pending */
procedure insert_pending(
cid in number,
pid in number,
rid in rowid,
wrid in urowid default null
);
/*-------------------------- DeletePending -------------------------*/
procedure DeletePending (
p_idxid in number,
p_ixpid in number,
p_rid in rowid
);
/*-------------------------- DeletePendingArr ----------------------*/
procedure DeletePendingArr (
p_idxid in number,
p_ixpid in number,
p_rid in dr_def.rowid_tab
);
/*-------------------------- SetLockFailed -------------------------*/
procedure SetLockFailed (
p_idxid in number,
p_ixpid in number,
p_rid in rowid
);
/*-------------------------- HasPending ----------------------------*/
function HasPending (
p_idxid in number,
p_ixpid in number
) return boolean;
/*-------------------------- CleanDelete ---------------------------*/
procedure CleanDelete (
p_idxid in number,
p_ixpid in number
);
/*-------------------------- PopulatePendingRowid ---------------------------*/
procedure PopulatePendingRowid (
p_idxid in number,
p_ixpid in number,
p_rowid in varchar2
);
/*-------------------------- lock_autosync_ret --------------------------*/
function lock_autosync_ret(
cid in number,
pid in number,
timeout in number
) return number;
/*---------------------------- lock_autosync ----------------------------*/
procedure lock_autosync(
cid in number,
pid in number,
timeout in number
);
/*--------------------------- unlock_autosync ---------------------------*/
procedure unlock_autosync(
ignore_errors in boolean default false
);
end dridml;
/
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO