增加oracle 11g x86版 instantclient
diff --git a/sdk/include/ocixstream.h b/sdk/include/ocixstream.h
new file mode 100755
index 0000000..9a25ed7
--- /dev/null
+++ b/sdk/include/ocixstream.h
@@ -0,0 +1,2116 @@
+/* Copyright (c) 2006, 2013, Oracle and/or its affiliates.
+All rights reserved. */
+
+/*
+ NAME
+ ocixstream.h - OCI XStream APIs
+
+ DESCRIPTION
+ OCI APIs for XStream
+
+ RELATED DOCUMENTS
+
+ EXPORT FUNCTION(S)
+
+ INTERNAL FUNCTION(S)
+
+ EXAMPLES
+
+ NOTES
+
+ MODIFIED (MM/DD/YY)
+ fergutie 01/30/13 - Backport fergutie_bug-14496414 from main
+ thoang 02/15/12 - Backport thoang_bug-13444033 from main
+ huntran 09/02/12 - Backport huntran_bug-13471035 from
+ huntran 05/09/12 - Backport huntran_bug-13042334 from main
+ apfwkr 02/13/12 - Backport vchandar_bug-13058458 from main
+ elu 06/06/11 - Backport elu_bug-12592488 from main
+ bpwang 04/14/11 - Backport bpwang_bug-11815316 from main
+ elu 04/12/11 - xmlschema
+ elu 03/28/11 - xmlschema
+ tianli 03/21/11 - Backport tianli_bug-11875662 from main
+ thoang 12/04/11 - Add OCI_ROWLCR_IS_INFLIGHT_TXN
+ elu 05/25/11 - remove xml schema
+ thoang 03/10/10 - Add OCIXSTREAM_IN_ATTACH_RESTART_INBOUND mode
+ thoang 12/28/09 - Update comments
+ elu 01/07/10 - stmt lcr
+ thoang 12/15/09 - Remove non-oracle src mode
+ thoang 12/09/09 - Add note to OCIXStreamInErrorGet
+ thoang 12/04/09 - Remove ProcessedLWMGet2/Set2
+ rmao 11/20/09 - add OCI_ROWLCR_SEQ_LCR
+ thoang 10/20/09 - Add rollback and start_tx cmd.
+ bpwang 10/09/09 - Add OCI_ROWLCR_HAS_ID_KEY_ONLY
+ elu 10/05/09 - add stmt LCR
+ rihuang 10/06/09 - Add OCIXSTREAM_IN_FLUSH_WAIT_FOR_COMPLETE
+ thoang 05/08/09 - Add OCILCR_NEW_ONLY_MODE
+ praghuna 05/11/09 - removed 'TODO' comments
+ thoang 02/15/09 - Change lob_column_* to chunk_column_*
+ thoang 01/27/09 - 8216105 - add OLD/NEW column parms to OCILCRHeaderGet
+ rihuang 01/05/09 - Add OCI_LCR_ATTR_TRACKING_LABEL
+ tianli 11/28/08 - add DDL flags
+ tianli 11/20/08 - add OCILCRAttribute methods
+ thoang 11/20/08 - Define OCI_LCR_MAX_TXID_LEN
+ tianli 11/07/08 - add edition
+ thoang 11/10/08 - change return type to sword for consistency
+ thoang 10/16/08 - remove commit position arg
+ tianli 08/26/08 - rename client_name in XStreamIn attach call
+ thoang 06/30/08 - Support XStream APIs using two callbacks.
+ praghuna 05/14/08 - charset id is ub2, OCILcrGetRowStmtWithBindVar
+ thoang 06/02/08 - Define reserved attach mode for internal clients
+ elu 05/08/08 - add pos functions
+ thoang 04/29/08 - API changes
+ jinwu 04/28/08 - add OCILcrGetExtraAttributes
+ elu 04/14/08 - add OCI_LCR_MAX_POSITION_LEN
+ juyuan 03/27/08 - add flag for Set/GetHeader and Set/GetColumnInfo
+ thoang 02/25/08 - Add GetNextChunk and SetNextChunk
+ rihuang 03/24/08 - Signature change for OCILcrNew
+ elu 03/05/08 - add lcr id
+ praghuna 02/26/08 - Added OCILcrGetRowStmt
+ thoang 01/25/08 - Add wm_time parameter to XApply APIs
+ thoang 12/28/07 - Add mode parameter to XApplyDetach
+ thoang 11/07/07 - Change extapp apis to return ub1[] watermark
+ juyuan 05/23/07 - XStream In
+ thoang 11/13/06 - Add XStream Out methods
+ thoang 11/13/06 - Add LCR getter methods
+ nshodhan 05/12/06 - xstream OCI APIs
+ nshodhan 05/12/06 - Creation
+
+*/
+
+#ifndef OCIXSTREAM_ORACLE
+# define OCIXSTREAM_ORACLE
+
+#ifndef ORATYPES
+# include <oratypes.h>
+#endif
+
+#ifndef OCI_ORACLE
+# include <oci.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------
+ PUBLIC TYPES AND CONSTANTS
+ ---------------------------------------------------------------------------*/
+/* LCR Types -- must match with values defined in kngo.h */
+#define OCI_LCR_XROW (3) /* External Row LCR */
+#define OCI_LCR_XDDL (4) /* External DDL LCR */
+
+/* DML Command Types -- must match with values defined in kngl.h */
+#define OCI_LCR_ROW_CMD_INSERT "INSERT"
+#define OCI_LCR_ROW_CMD_DELETE "DELETE"
+#define OCI_LCR_ROW_CMD_UPDATE "UPDATE"
+#define OCI_LCR_ROW_CMD_COMMIT "COMMIT"
+#define OCI_LCR_ROW_CMD_LOB_WRITE "LOB WRITE"
+#define OCI_LCR_ROW_CMD_LOB_TRIM "LOB TRIM"
+#define OCI_LCR_ROW_CMD_LOB_ERASE "LOB ERASE"
+#define OCI_LCR_ROW_CMD_ROLLBACK "ROLLBACK"
+#define OCI_LCR_ROW_CMD_START_TX "START_TX" /* start transaction */
+#define OCI_LCR_ROW_CMD_CTRL_INFO "CONTROL INFO" /* contorl lcr */
+
+/* LCR Extra Attribute Name -- must match with values defined in knll.h */
+#define OCI_LCR_ATTR_THREAD_NO "THREAD#"
+#define OCI_LCR_ATTR_ROW_ID "ROW_ID"
+#define OCI_LCR_ATTR_SESSION_NO "SESSION#"
+#define OCI_LCR_ATTR_SERIAL_NO "SERIAL#"
+#define OCI_LCR_ATTR_USERNAME "USERNAME"
+#define OCI_LCR_ATTR_TX_NAME "TX_NAME"
+
+/* below are non first class LCR field specific */
+#define OCI_LCR_ATTR_EDITION_NAME "EDITION_NAME"
+#define OCI_LCR_ATTR_MESSAGE_TRACKING_LABEL "MESSAGE_TRACKING_LABEL"
+#define OCI_LCR_ATTR_CURRENT_USER "CURRENT_USER"
+#define OCI_LCR_ATTR_OLD_OWNER "OLD_OWNER"
+#define OCI_LCR_ATTR_OLD_ONAME "OLD_ONAME"
+
+/* Row LCR column value types used in OCILCRRowColumnInfoGet/Set functions. */
+#define OCI_LCR_ROW_COLVAL_OLD 0 /* OLD columns */
+#define OCI_LCR_ROW_COLVAL_NEW 1 /* NEW columns */
+
+/* maximum length for position
+ * NOTE: This MUST be consistent with DefaultRowLCRCache.MaxLowWaterMarkLength
+ * in DefaultRowLCRCache.java
+ */
+#define OCI_LCR_MAX_POSITION_LEN 64
+
+/* maximum length for txid */
+#define OCI_LCR_MAX_TXID_LEN 128
+
+/* Valid column flags used in OCILCRRowColumnInfoSet, OCILCRRowColumnInfoGet,
+ * OCILCRLobInfoSet, OCILCRLobInfoGet, OCIXStreamOutChunkReceive,
+ * OCIXStreamInChunkSend calls.
+ * NOTE: last byte reserved for private OCIP_LCR flags.
+ */
+#define OCI_LCR_COLUMN_LOB_DATA (0x00000001) /* col contains lob data */
+#define OCI_LCR_COLUMN_LONG_DATA (0x00000002) /* col contains long data*/
+#define OCI_LCR_COLUMN_EMPTY_LOB (0x00000004) /* col has an empty lob */
+#define OCI_LCR_COLUMN_LAST_CHUNK (0x00000008) /* last chunk of current col*/
+#define OCI_LCR_COLUMN_AL16UTF16 (0x00000010) /* col is in AL16UTF16 fmt */
+#define OCI_LCR_COLUMN_NCLOB (0x00000020) /* col has NCLOB data */
+#define OCI_LCR_COLUMN_XML_DATA (0x00000040) /* col contains xml data */
+#define OCI_LCR_COLUMN_XML_DIFF (0x00000080)/* col contains xmldiff data */
+#define OCI_LCR_COLUMN_ENCRYPTED (0x00000100) /* col is encrypted */
+
+/* OCI_LCR_COLUMN_UPDATED is set only for the modified columns in the NEW
+ * column list of an update LCR.
+ */
+#define OCI_LCR_COLUMN_UPDATED (0x00000200) /* col is updated */
+
+/* Valid bit values for the flag parameter in the following APIS:
+ * - OCILCRHeaderGet
+ * - OCILCRHeaderSet
+ */
+#define OCI_ROWLCR_HAS_ID_KEY_ONLY (0x00000001) /* only has ID key cols */
+ /* (0x00000002) is RESERVED */
+ /* (0x00000004) is RESERVED */
+ /* (0x00000008) is RESERVED */
+#define OCI_ROWLCR_SEQ_LCR (0x00000010) /* sequence lcr */
+
+/* LCR belongs to an inflight transaction, i.e., transaction was started
+ * before the outbound server's starting position.
+ */
+#define OCI_ROWLCR_IS_INFLIGHT_TXN (0x00000020)
+
+/* Valid bit values for flag parameter in the following APIs:
+ * - OCIXStreamOutChunkReceive & OCIXStreamOutLCRReceive
+ * - OCIXStreamInChunkSend & OCIXStreamInLCRSend
+ */
+#define OCI_XSTREAM_MORE_ROW_DATA (0x00000001) /* LCR contains more data */
+
+/* Valid mode flag for OCILCRHeaderGet and OCILCRRowColumnInfoGet functions */
+#define OCILCR_NEW_ONLY_MODE (0x0001) /* NEW columns only -- dont */
+ /* include OLD columns */
+
+/* Valid mode flag for OCIXStreamInFlush */
+ /* Synchronous mode for OCIXStreamInFlush */
+#define OCIXSTREAM_IN_FLUSH_WAIT_FOR_COMPLETE (0x00000001)
+
+/* SessionSet attributes */
+#define OCIXSTREAM_SESSION_SET_MAX_PARAM_LEN 128
+#define OCIXSTREAM_ATTR_ATTACH_TIMEOUT "ATTACH_TIMEOUT_SECS"
+#define OCIXSTREAM_ATTR_MAX_ATTACH_RETRIES "MAX_ATTACH_RETRIES"
+
+/*---------------------------------------------------------------------------
+ PRIVATE TYPES AND CONSTANTS
+ ---------------------------------------------------------------------------*/
+
+
+/*---------------------------------------------------------------------------
+ EXPORT FUNCTIONS
+ ---------------------------------------------------------------------------*/
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRNew - OCI LCR NEW
+DESCRIPTION
+ Create a new XStream LCR for the user specified duration and type
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ duration (IN) - allocation duration for LCR memory
+ lcrtype (IN) - LCR type (OCI_LCR_XROW / OCI_LCR_XDDL)
+ lcrp (IN/OUT) - XStream LCR. (*lcrp must be initialized to null.)
+ mode (IN) - mode
+NOTES
+ - memory will be based on the duration specified by the user
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRNew(OCISvcCtx *svchp,
+ OCIError *errhp,
+ OCIDuration duration,
+ ub1 lcrtype,
+ void **lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRFree - OCI LCR FREE
+DESCRIPTION
+ Free XStream LCR specified by the user
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ lcrp (IN/OUT) - XStream LCR
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRFree(OCISvcCtx *svchp,
+ OCIError *errhp,
+ void *lcrp,
+ ub4 mode);
+
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRHeaderSet - OCI LCR Set Header
+DESCRIPTION
+ Initialize elements of XStream LCR's header
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ src_db_name (IN) - Pointer to Canonicalized source database name.
+ Must be non-NULL.
+ src_db_name_len (IN) - Length of source database name in bytes
+ excluding NULL terminator. Should follow Oracle
+ naming conventions and size limitations.
+ cmd_type (IN) - For ROW LCRs: OCI_LCR_ROW_CMD_XXXXXXX
+ For DDL LCRs: One of the command types
+ corresponding to OCI Reference manual
+ cmd_type_len (IN) - Length of cmd_type.
+ owner (IN) - Canonicalized table owner name. Not required
+ for COMMIT LCR.
+ owner_len (IN) - Length of owner name in bytes excluding the
+ NULL terminator. Should follow Oracle naming
+ conventions and size limitations.
+ oname (IN) - Canonicalized table name. Not required for
+ COMIT LCR.
+ oname_len (IN) - Length of table name in bytes excluding the
+ NULL terminator. Should follow Oracle naming
+ conventions and size limitations.
+ tag (IN) - A binary tag that enables tracking of the LCR.
+ For example, this tag can be used to determine
+ the original source database of the DML
+ statement if apply forwarding is used.
+ tag_len (IN) - Number of bytes in the tag. Cannot exceed 2000
+ bytes
+ txid (IN) - Transaction ID.
+ txid_len (IN) - Length of transaction id in bytes excluding the
+ NULL terminator. Should not exceeed
+ OCI_LCR_MAX_TXID_LEN bytes.
+ src_time (IN) - The time when the change was generated at the
+ source database.
+ position (IN) - position for LCR. Must be byte-comparable.
+ position_len (IN) - Length of position. Must be non-zero.
+ flag (IN) - LCR flag.
+ lcrp (IN/OUT) - XStream LCR
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+ - This function clears the current contents of the input LCR before
+ setting the header to the new values.
+------------------------------------------------------------------------------=
+*/
+sword OCILCRHeaderSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *src_db_name,
+ ub2 src_db_name_len,
+ oratext *cmd_type,
+ ub2 cmd_type_len,
+ oratext *owner,
+ ub2 owner_len,
+ oratext *oname,
+ ub2 oname_len,
+ ub1 *tag,
+ ub2 tag_len,
+ oratext *txid,
+ ub2 txid_len,
+ OCIDate *src_time,
+ ub1 *position,
+ ub2 position_len,
+ oraub8 flag,
+ void *lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRHeaderGet - OCI LCR Get Header
+DESCRIPTION
+ Get header information from XStream LCR
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ src_db_name (OUT) - Pointer to Canonicalized source database name.
+ Optional, if src_db_name is specified then
+ must specify src_db_name_len as well.
+ src_db_name_len (OUT) - Length of source database name in bytes
+ excluding NULL terminator.
+ Optional, if specified src_db_name_len then
+ must specify src_db_name as well.
+ cmd_type (OUT) - Command type. Must be non-null if
+ cmd_type_len is non-null. Must be null if
+ cmd_type_len is NULL.
+ cmd_type_len (OUT) - Length of cmd_type. Optional.
+ owner (OUT) - Canonicalized table owner name.
+ Optional, if owner is specified then
+ must specify owner_len as well.
+ owner_len (OUT) - Length of owner name in bytes excluding the
+ NULL terminator.
+ Optional, if owner_len is specified then
+ must specify owner as well.
+ oname (OUT) - Canonicalized table name.
+ Optional, if oname is specified then
+ must specify oname_len as well.
+ oname_len (OUT) - Length of table name in bytes excluding the
+ NULL terminator.
+ Optional, if oname_len is specified then
+ must specify oname as well.
+ tag (OUT) - A binary tag that enables tracking of the LCR.
+ For example, this tag can be used to determine
+ the original source database of the
+ DML statement if apply forwarding is used.
+ Optional, if tag is specified then
+ must specify tag_len as well.
+ tag_len (OUT) - Number of bytes in the tag.
+ Optional, if tag_len is specified then
+ must specify tag as well.
+ txid (OUT) - Transaction ID.
+ Optional, if txid is specified then
+ must specify txid_len as well.
+ txid_len (OUT) - Length of transaction id in bytes excluding
+ the NULL terminator.
+ Optional, if txid_len is specified then
+ must specify txid as well.
+ src_time (OUT) - The time when the change was generated at the
+ source database. Optional.
+ old_columns (OUT) - Number of columns in the OLD column list.
+ Return 0 if input lcr is DDL LCR. Optional.
+ new_columns (OUT) - Number of columns present in either
+ the OLD or NEW column list.
+ Return 0 if input lcr is DDL LCR. Optional.
+ See NOTES below for the special mode supported
+ by this function.
+ position (OUT) - LCR position. Optional.
+ position_len (OUT) - Length of position. Must be non-null if
+ position is non-null. Must be null if
+ position is null.
+ flag (OUT) - LCR flag. Optional.
+ lcrp (IN) - XStream LCR
+ mode (IN) - mode (see NOTES)
+NOTES
+ - Parameter src_time is optional. If specified the appropriate return
+ structure must be pre-allocated before calling OCILCRHeaderGet.
+ - The return values for src_db_name, cmd_type, owner, oname, tag, txid and
+ position are shallow-copied (i.e., they point directly into the LCR
+ structure).
+ - Valid mode flags:
+ - OCILCR_NEW_ONLY_MODE: if this mode is specified then the new_columns
+ returned is the count of the columns in the NEW column list only.
+ Otherwise, the new_columns returned is the number of distinct
+ columns present in either the NEW or the OLD column list of the given
+ ROW LCR.
+------------------------------------------------------------------------------=
+*/
+
+sword OCILCRHeaderGet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext **src_db_name,
+ ub2 *src_db_name_len,
+ oratext **cmd_type,
+ ub2 *cmd_type_len,
+ oratext **owner,
+ ub2 *owner_len,
+ oratext **oname,
+ ub2 *oname_len,
+ ub1 **tag,
+ ub2 *tag_len,
+ oratext **txid,
+ ub2 *txid_len,
+ OCIDate *src_time,
+ ub2 *old_columns,
+ ub2 *new_columns,
+ ub1 **position,
+ ub2 *position_len,
+ oraub8 *flag,
+ void *lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRRowColumnInfoSet - OCI LCR ROW SET COLUMN INFO
+DESCRIPTION
+ Populates column information as specified by the user.
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ column_value_type (IN) - ROW LCR column value type:
+ - OCI_LCR_ROW_COLVAL_OLD
+ - OCI_LCR_ROW_COLVAL_NEW
+ num_columns (IN) - Number of columns to be populated
+ column_names (IN) - Pointer to an array of column names. Column
+ names must be canonicalized. Column names should
+ follow Oracle naming conventions
+ column_name_lens (IN) - Pointer to an array of column name lengths
+ in bytes, excluding the NULL terminator.
+ column_dtyp (IN) - Pointer to an array of column datatypes.
+ column_valuesp (IN) - Pointer to an array of column data values.
+ column_indp (IN) - Pointer to an indicator array. For all datatypes,
+ this is a pointer to an array of OCIInd values
+ (OCI_IND_NULL/OCI_IND_NOTNULL).
+ column_alensp (IN) - Pointer to an array of actual column lengths in
+ bytes.
+ column_csetfp (IN) - Pointer to an array of character set forms for
+ the columns. The default form is SQLCS_IMPLICIT.
+ Setting this attribute will cause the database or
+ national character set to be used on the client
+ side. Set this attribute to SQLCS_NCHAR for the
+ national character set or SQLCS_IMPLICIT for the
+ database character set.
+ Pass 0 for non-character columns.
+ column_flags (IN) - Pointer to an array of column flags.
+ Possible bit values are OCI_LCR_COLUMN_* flags
+ listed above.
+ column_csid (IN) - Pointer to an array of column character set id.
+ The character set id is only required for
+ XMLType column; otherwise, the csid is ignored.
+ row_lcrp (IN/OUT)- XStream Row LCR pointer
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRRowColumnInfoSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub2 column_value_type,
+ ub2 num_columns,
+ oratext **column_names,
+ ub2 *column_name_lens,
+ ub2 *column_dtyp,
+ void **column_valuesp,
+ OCIInd *column_indp,
+ ub2 *column_alensp,
+ ub1 *column_csetfp,
+ oraub8 *column_flags,
+ ub2 *column_csid,
+ void *row_lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRRowColumnInfoGet - OCI LCR ROW GET COLUMN INFO
+DESCRIPTION
+ Returns column information as requested by the user.
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ column_value_type (IN) - ROW LCR column value type:
+ - OCI_LCR_ROW_COLVAL_OLD
+ - OCI_LCR_ROW_COLVAL_NEW
+ (See NOTES for special mode supported by this
+ function.)
+ num_columns (OUT) - Number of columns in requested column list
+ column_names (IN/OUT)- Pointer to an array of column names.
+ Optional. If specified then column_namesl must
+ be specified as well, and both arrays must be the
+ size specified by array_size parameter.
+ column_name_lens (IN/OUT)- Pointer to an array of column name lengths
+ in bytes, excluding the NULL terminator.
+ Optional. If specified then column_names must
+ be specified as well, and both arrays must be the
+ size specified by array_size parameter.
+ column_dtyp (IN/OUT)- Pointer to an array of column datatypes.
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ column_valuesp (IN/OUT)- Pointer to an array of column data values.
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ column_indp (IN/OUT)- Pointer to an indicator array. For all datatypes,
+ this is a pointer to an array of OCIInd values
+ (OCI_IND_NULL/OCI_IND_NOTNULL).
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ column_alensp (IN/OUT)- Pointer to an array of actual column lengths in
+ bytes.
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ column_csetfp (IN/OUT)- Pointer to an array of character set forms for
+ the columns.
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ column_flags (IN/OUT)- Pointer to an array of column flags for
+ the columns.
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ Possible bit values are OCI_LCR_COLUMN_* flags
+ listed above.
+ column_csid (IN/OUT)- Pointer to an array of column character set id for
+ the columns.
+ Optional. If specified then this array must be
+ the size specified by array_size parameter.
+ The column csid is returned only for XMLType
+ column.
+ row_lcrp (IN) - XStream Row LCR pointer
+ array_size (IN) - Size of each of above arrays
+ mode (IN) - mode (see NOTES)
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+ - If array_size is not large enough to accommodate the number of columns
+ in the requested column list then OCI_ERROR is returned. Parameter
+ num_columns will have the number of columns in the requested column list.
+ - The return values for column_names and column_valuesp will be shallow
+ copied (i.e., they reference directly into the LCR structure).
+ Client should not modify those pointers directly.
+ - Valid mode flags:
+ - OCILCR_NEW_ONLY_MODE: this mode is valid only for OCI_LCR_ROW_COLVAL_NEW
+ column_value_type; otherwise, an error is raised.
+ If this mode is specified then the columns returned include only the
+ columns in the NEW column list.
+ If this mode is not specified then the columns returned is the union
+ of the NEW columns plus the OLD columns that are not present in the
+ NEW column list.
+------------------------------------------------------------------------------=
+*/
+sword OCILCRRowColumnInfoGet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub2 column_value_type,
+ ub2 *num_columns,
+ oratext **column_names,
+ ub2 *column_name_lens,
+ ub2 *column_dtyp,
+ void **column_valuesp,
+ OCIInd *column_indp,
+ ub2 *column_alensp,
+ ub1 *column_csetfp,
+ oraub8 *column_flags,
+ ub2 *column_csid,
+ void *row_lcrp,
+ ub2 array_size,
+ ub4 mode);
+
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRDDLInfoSet - OCI LCR SET DDL INFO
+DESCRIPTION
+ populates DDL information as sepcified by the user.
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ object_type (IN) - The type of object on which the DDL statement was
+ executed. The following are valid object types:
+ CLUSTER, FUNCTION, INDEX, LINK, OUTLINE,
+ PACKAGE, PACKAGE BODY, PROCEDURE, SEQUENCE,
+ SYNONYM, TABLE, TRIGGER, TYPE, USER, VIEW
+ LINK represents a database link.
+ NULL is also a valid object type. Specify NULL
+ for all object types not listed.
+ object_type_len (IN) - Length of object_type without the NULL terminator.
+ ddl_text (IN) - The text of the DDL statement. This parameter
+ should be set to a non-NULL value.
+ DDL text must be in Oracle DDL format.
+ ddl_text_len (IN) - DDL text length in bytes without NULL terminator.
+ logon_user (IN) - Canonicalized name of the user whose session
+ executed the DDL statement. Should follow Oracle
+ naming conventions and size limitations.
+ logon_user_len (IN) - logon user name length in bytes without NULL
+ terminator.
+ current_schema (IN) - The canonicalized schema name that is used if no
+ schema is specified explicitly for the modified
+ database objects in ddl_text. If a schema is
+ specified in ddl_text that differs from the one
+ specified for current_schema, then the schema
+ specified in ddl_text will be used.
+ This parameter should be set to a non-NULL value.
+ Should follow Oracle naming conventions and size
+ limitations.
+ current_schema_len (IN) - schema name length in bytes without NULL terminator
+ base_table_owner (IN) - If the DDL statement is a table related DDL
+ (such as CREATE TABLE and ALTER TABLE), or if the
+ DDL statement involves a table (such as creating
+ a trigger on a table), then base_table_owner
+ specifies the canonicalized owner of the table
+ involved. Otherwise, base_table_owner is NULL.
+ Should follow Oracle naming conventions and size
+ limitations.
+ base_table_owner_len (IN)- base table owner name length in bytes without NULL
+ terminator.
+ base_table_name (IN) - If the DDL statement is a table related DDL (such
+ as CREATE TABLE and ALTER TABLE), or if the DDL
+ statement involves a table (such as creating a
+ trigger on a table), then base_table_name
+ specifies the canonicalized name of the table
+ involved. Otherwise, base_table_name is NULL.
+ Length of the above string without the NULL
+ terminator. Should follow Oracle naming
+ conventions and size limitations.
+ Should follow Oracle naming conventions and size
+ limitations.
+ base_table_name_len (IN)- base table name length in bytes without NULL
+ terminator.
+ flag (IN) - DDL LCR flag.
+ ddl_lcrp (IN/OUT) - XStream Ddl LCR pointer
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRDDLInfoSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *object_type,
+ ub2 object_type_len,
+ oratext *ddl_text,
+ ub4 ddl_text_len,
+ oratext *logon_user,
+ ub2 logon_user_len,
+ oratext *current_schema,
+ ub2 current_schema_len,
+ oratext *base_table_owner,
+ ub2 base_table_owner_len,
+ oratext *base_table_name,
+ ub2 base_table_name_len,
+ oraub8 flag,
+ void *ddl_lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRDDLInfoGet - OCI LCR GET DDL INFO
+DESCRIPTION
+ Returns DDL information from specified lcr.
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ object_type (OUT) - The type of object on which the DDL statement
+ was executed.
+ Optional, if object_type is specified then
+ must specify object_type_len as well.
+ object_type_len (OUT) - Length of object_type without the NULL
+ terminator.
+ ddl_text (OUT) - The text of the DDL statement.
+ Optional, if ddl_text is specified then
+ must specify ddl_text_len as well.
+ ddl_text_len (OUT) - DDL text length in bytes without NULL
+ terminator.
+ logon_user (OUT) - Canonicalized name of the user whose session
+ executed the DDL statement.
+ Optional, if logon_user is specified then
+ must specify logon_user_len as well.
+ logon_user_len (OUT) - logon user name length in bytes without NULL
+ terminator.
+ current_schema (OUT) - The canonicalized schema name that is used if
+ no schema is specified explicitly for the
+ modified database objects in ddl_text.
+ Optional, if current_schema is specified then
+ must specify current_schema_len as well.
+ current_schema_len (OUT)- schema name length in bytes without NULL
+ terminator
+ base_table_owner (OUT) - If the DDL statement is a table related DDL
+ (such as CREATE TABLE and ALTER TABLE), or if
+ the DDL statement involves a table (such as
+ creating a trigger on a table), then
+ base_table_owner specifies the canonicalized
+ owner of the table involved. Otherwise,
+ base_table_owner is NULL. Optional, if
+ base_table_owner is specified then must specify
+ base_table_owner_len as well.
+ base_table_owner_len (OUT) - base table owner name length in bytes without
+ NULL terminator.
+ base_table_name (OUT) - If the DDL statement is a table related DDL
+ (such as CREATE TABLE and ALTER TABLE), or if
+ the DDL statement involves a table (such as
+ creating a trigger on a table), then
+ base_table_name specifies the canonicalized name
+ of the table involved. Otherwise,
+ base_table_name is NULL. Optional, if
+ base_table_name is specified then must specify
+ base_table_name_len as well.
+ base_table_name_len (OUT) - base table name length in bytes without NULL
+ terminator.
+ flag (OUT) - DDL LCR flag. Optional, data not returned if
+ NULL.
+ ddl_lcrp (IN) - XStream DDL LCR pointer
+ mode (IN) - mode (for future extention - not used currently)
+RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRDDLInfoGet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext **object_type,
+ ub2 *object_type_len,
+ oratext **ddl_text,
+ ub4 *ddl_text_len,
+ oratext **logon_user,
+ ub2 *logon_user_len,
+ oratext **current_schema,
+ ub2 *current_schema_len,
+ oratext **base_table_owner,
+ ub2 *base_table_owner_len,
+ oratext **base_table_name,
+ ub2 *base_table_name_len,
+ oraub8 *flag,
+ void *ddl_lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRAttributesSet - OCI LCR SET ATTRIBUTES
+DESCRIPTION
+ populates extra attribute information in ROW/DDL LCR, as well as any
+ non first class attributes that can not be set through
+ OCILCRHeaderSet, OCILCRDDLInfoSet, or OCILCRRowColumnInfoSet.
+ e.g. edition name
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ num_attrs (IN) - Number of extra attributes to be populated
+ attr_names (IN) - Pointer to an array of attribute names. Attribute
+ names must be canonicalized and should follow
+ Oracle naming conventions
+ attr_names_lens (IN) - Pointer to an array of attribute name lengths
+ in bytes, excluding the NULL terminator.
+ attr_dtyp (IN) - Pointer to an array of attribute datatypes.
+ attr_valuesp (IN) - Pointer to an array of attribute data values.
+ attr_indp (IN) - Pointer to an indicator array. For all datatypes,
+ this is a pointer to an array of OCIInd values
+ (OCI_IND_NULL/OCI_IND_NOTNULL).
+ attr_alensp (IN) - Pointer to an array of actual attribute lengths in
+ bytes.
+ lcrp (IN/OUT)- XStream (Row/DDL) LCR pointer
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRAttributesSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub2 num_attrs,
+ oratext **attr_names,
+ ub2 *attr_name_lens,
+ ub2 *attr_dtyp,
+ void **attr_valuesp,
+ OCIInd *attr_indp,
+ ub2 *attr_alensp,
+ void *lcrp,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRAttributesGet - OCI LCR GET EXTRA ATTRIBUTES
+DESCRIPTION
+ Gets extra attribute information in (ROW/DDL) LCR, as well as any
+ non first class attributes that are not populated through
+ OCILCRHeaderGet, OCILCRDDLInfoGet, or OCILCRRowColumnInfoGet
+ e.g. edition name
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ num_attrs (OUT) - Number of extra attributes to be populated
+ attr_names (IN/OUT)- Pointer to an array of attribute names. Attribute
+ names must be canonicalized and should follow
+ Oracle naming conventions
+ attr_namesl (IN/OUT)- Pointer to an array of attribute name lengths
+ in bytes, excluding the NULL terminator.
+ attr_dtyp (IN/OUT)- Pointer to an array of attribute datatypes.
+ attr_valuesp (IN/OUT)- Pointer to an array of attribute data values.
+ attr_indp (IN/OUT)- Pointer to an indicator array. For all datatypes,
+ this is a pointer to an array of OCIInd values
+ (OCI_IND_NULL/OCI_IND_NOTNULL).
+ attr_alensp (IN/OUT)- Pointer to an array of actual attribute lengths in
+ bytes.
+ lcrp (IN) - XStream (Row/DDL) LCR pointer
+ array_size (IN) - Size of each of above arrays, use at least the size
+ defined by OCI_LCR_MAX_ATTRIBUTES
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+ - If array_size is not large enough to accommodate the number of attributes
+ in the requested attribute list then OCI_ERROR is returned. Parameter
+ num_attrs will return the suggested size.
+------------------------------------------------------------------------------=
+*/
+sword OCILCRAttributesGet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub2 *num_attrs,
+ oratext **attr_names,
+ ub2 *attr_namesl,
+ ub2 *attr_dtyp,
+ void **attr_valuesp,
+ OCIInd *attr_indp,
+ ub2 *attr_alensp,
+ void *lcrp,
+ ub2 array_size,
+ ub4 mode);
+
+/*--------------------- OCILCRWhereClauseGet ----------------------------*/
+/*
+ NAME
+ OCILCRWhereClauseGet - OCI Get Where Clause
+ DESCRIPTION
+ Gets the Where clause statement for the given ROW LCR.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ wc_stmt (OUT) - Sql Statement equivalent to the
+ LCR has applied
+ wc_stmt_len (IN/OUT) - length of wc_stmt buffer
+ row_lcrp (IN) - row LCR to be converted to SQL
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ - For now, specify OCI_DEFAULT for mode
+ - WHERE clause generated for INSERT lcr will have all the columns that
+ are being inserted. This WHERE clause could be used to identify the
+ inserted row after inserting. (like "returning ROWID").
+ INSERT INTO TAB(COL1) VALUES (10) -> WHERE COL1=10
+ - WHERE clause generated for UPDATE will have all the columns in the
+ old column list. However the values of the columns will be that of
+ new value if it exist in the new column list
+ of the UPDATE. If the column doesnt have new value then the old column
+ value will be used.
+ UPDATE TAB SET COL1 = 10 WHERE COL1 = 20 -> WHERE COL1 = 10
+ UPDATE TAB SET COL2 = 20 WHERE COL1 = 20 -> WHERE COL1 = 20
+ - WHERE clause for DELETE will use the columns and values from
+ old column lst
+ - LOB piecewise operations would use the new columns and values for
+ generating the WHERE clause.
+*/
+
+sword OCILCRWhereClauseGet(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *wc_stmt,
+ ub4 *wc_stmt_len,
+ void *row_lcrp,
+ ub4 mode);
+
+/*--------------------- OCILCRRowStmtGet ----------------------------*/
+/*
+ NAME
+ OCILCRRowStmtGet - OCI Get Row Statement
+ DESCRIPTION
+ Gets the SQL statement for the given ROW LCR.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ row_stmt (OUT) - Sql Statement equivalent to the
+ LCR has applied
+ row_stmt_len (IN/OUT) - length of row_stmt buffer
+ row_lcrp (IN) - row LCR to be converted to SQL
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ None
+*/
+sword OCILCRRowStmtGet(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *row_stmt,
+ ub4 *row_stmt_len,
+ void *row_lcrp,
+ ub4 mode);
+
+/*--------------------- OCILCRWhereClauseWithBindVarGet ----------------------*/
+/*
+ NAME
+ OCILCRWhereClauseWithBindVarGet - OCI Get Where clause with binds
+ DESCRIPTION
+ Gets the where clause statement with bind variables for the given ROW LCR.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ wc_stmt (OUT) - Sql Stmt equivalent to the LCR
+ wc_stmt_len (IN/OUT) - length of wc_stmt buffer
+ num_bind_var (OUT) - Number of bind variables
+ bind_var_dtyp (OUT) - Array of Data types of bind
+ variables
+ bind_var_valuesp (OUT) - Array of Values of bind variables
+ bind_var_indp (OUT) - Array of null indicators of
+ bind variables
+ bind_var_alensp (OUT) - Array of lengths of bind values
+ bind_var_csetidp (OUT) - Array of char set id of binds
+ bind_var_csetfp (OUT) - Array of char set form of binds
+ row_lcrp (IN) - row LCR to be converted to SQL
+ array_size (IN) - Size of the array of bind values
+ bind_var_syntax (IN) - Native syntax to be used for binds
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ - For now, specify OCI_DEFAULT for mode
+ - If array_size is not large enough to accommodate the number of columns
+ in the requested column list then OCI_ERROR is returned. Expected
+ array_size is returned through num_bind_var parameter.
+ - bind_var_syntax for oracle should contain ":". This will generate
+ positional binds such as :1, :2, :3 etc. For other non-oracle databases
+ they can give the string that needs to be used for binds.
+ - WHERE clause generated for INSERT lcr will have all the columns that
+ are being inserted. This WHERE clause could be used to identify the
+ inserted row after inserting. (like "returning ROWID").
+ INSERT INTO TAB(COL1) VALUES (10) -> WHERE COL1=10
+ - WHERE clause generated for UPDATE will have all the columns in the
+ old column list. However the values of the columns will be that of
+ new column value of the column if it exist in the new values
+ of the UPDATE. If the column appears only in the old column then
+ old column value will be used.
+ UPDATE TAB SET COL1 = 10 WHERE COL1 = 20 -> WHERE COL1 = 10
+ UPDATE TAB SET COL2 = 20 WHERE COL1 = 20 -> WHERE COL1 = 20
+ - WHERE clause for DELETE will use the columns and values from
+ old column lst
+ - LOB piecewise operations would use the new columns and values for
+ generating the WHERE clause.
+*/
+sword OCILCRWhereClauseWithBindVarGet(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *wc_stmt,
+ ub4 *wc_stmt_len,
+ ub2 *num_bind_var,
+ ub2 *bind_var_dtyp,
+ void **bind_var_valuesp,
+ OCIInd *bind_var_indp,
+ ub2 *bind_var_alensp,
+ ub2 *bind_var_csetidp,
+ ub1 *bind_var_csetfp,
+ void *row_lcrp,
+ ub2 array_size,
+ oratext *bind_var_syntax,
+ ub4 mode);
+
+/*--------------------- OCILCRRowStmtWithBindVarGet ----------------------*/
+/*
+ NAME
+ OCILCRRowStmtWithBindVarGet - OCI Get Row Statement
+ DESCRIPTION
+ Gets the SQL statement with bind variables for the given ROW LCR.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ row_stmt (OUT) - Sql Stmt equivalent to the LCR
+ row_stmt_len (IN/OUT) - length of row_stmt buffer
+ num_bind_var (OUT) - Number of bind variables
+ bind_var_dtyp (OUT) - Array of Data types of bind
+ variables
+ bind_var_valuesp (OUT) - Array of Values of bind variables
+ bind_var_indp (OUT) - Array of null indicators of
+ bind variables
+ bind_var_alensp (OUT) - Array of lengths od bind values
+ bind_var_csetidp (OUT) - Array of char set id of binds
+ bind_var_csetfp (OUT) - Array of char set form of binds
+ row_lcrp (IN) - row LCR to be converted to SQL
+ chunk_column_names (OUT) - Array of chunked column names in
+ lcr
+ chunk_column_namesl (OUT) - Length of chunk_column_names
+ chunk_column_flags (OUT) - flags of chunked columns in lcr
+ Possible bit values are
+ OCI_LCR_COLUMN_* flags listed
+ above.
+ array_size (IN) - Size of the array of bind values
+ bind_var_syntax (IN) - Native syntax to be used for binds
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ - For now, specify OCI_DEFAULT for mode
+ - If array_size is not large enough to accommodate the number of columns
+ in the requested column list then OCI_ERROR is returned. Expected
+ array_size is returned through num_bind_var parameter.
+ - bind_var_syntax for oracle should contain ":". This will generate
+ positional binds such as :1, :2, :3 etc. For other non-oracle databases
+ they can give the string that needs to be used for binds.
+*/
+sword OCILCRRowStmtWithBindVarGet(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *row_stmt,
+ ub4 *row_stmt_len,
+ ub2 *num_bind_var,
+ ub2 *bind_var_dtyp,
+ void **bind_var_valuesp,
+ OCIInd *bind_var_indp,
+ ub2 *bind_var_alensp,
+ ub2 *bind_var_csetidp,
+ ub1 *bind_var_csetfp,
+ void *row_lcrp,
+ oratext **chunk_column_names,
+ ub2 *chunk_column_namesl,
+ oraub8 *chunk_column_flags,
+ ub2 array_size,
+ oratext *bind_var_syntax,
+ ub4 mode);
+
+/*
+-------------------------------------------------------------------------------
+ NAME
+ OCILCRSCNsFromPosition - Get SCNs From Position
+
+ DESCRIPTION
+ Returns the SCN and commit SCN from the given position.
+ PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ position (IN) - LCR position
+ position_len (IN) - length of position
+ scn (OUT) - the SCN stored in position
+ commit_scn (OUT) - the commit SCN stored in position
+ mode (IN) - Mode flags (For future extension. Not used
+ currently)
+ RETURN
+ OCI_SUCCESS if the conversion succeeds, OCI_ERROR otherwise.
+ NOTE
+ The user must allocate memory for the return numbers.
+ The input position must conform to the format generated by an XStream
+ server.
+-------------------------------------------------------------------------------
+*/
+sword OCILCRSCNsFromPosition(OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub1 *position,
+ ub2 position_len,
+ OCINumber *scn,
+ OCINumber *commit_scn,
+ ub4 mode);
+
+/*
+-------------------------------------------------------------------------------
+ NAME
+ OCILCRSCNToPosition - Converts SCN To Position
+
+ DESCRIPTION
+ Converts an SCN to a position. The generated position can be passed as the
+ last_position to OCIXStreamOutAttach function to filter the LCRs
+ with commit SCN less than the given SCN and the LCR's SCN less than the
+ given SCN. This means the first LCR sent by the Outbound server is either
+ - a commit LCR at the given SCN, or
+ - the first LCR of the subsequent transaction with commit SCN greater
+ than or equal to the given SCN.
+ PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ position (OUT) - Result position. Must pre-allocate
+ OCI_LCR_MAX_POSITION_LEN bytes.
+ position_len (OUT) - Length of position
+ scn (IN) - The SCN to be stored in position
+ mode (IN) - Mode flags (for future extension)
+ RETURN
+ OCI_SUCCESS if the conversion succeeds, OCI_ERROR otherwise.
+-------------------------------------------------------------------------------
+*/
+sword OCILCRSCNToPosition(OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub1 *position,
+ ub2 *position_len,
+ OCINumber *scn,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRLobInfoGet - OCI LCR GET LOB INFO
+DESCRIPTION
+ Returns the LOB information for a given piece-wise LOB LCR.
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ column_name (OUT) - Pointer to the LOB column name.
+ Optional. If specified then column_name_len must
+ be specified as well.
+ column_name_len(OUT) - Length of LOB column name without the NULL
+ terminator.
+ column_dty (OUT) - LOB column dty - either SQLT_CHR (for CLOB) or
+ SQLT_BIN (for BLOB).
+ column_flag (OUT) - LOB column flag.
+ Possible bit values are OCI_LCR_COLUMN_* flags
+ listed above.
+ offset (OUT) - LOB operation offset in code points. Returned only
+ for LOB_TRIM and LOB_WRITE operations; otherwise,
+ a zero is returned.
+ This is the same as the 'soffset' parameter for
+ OCILobErase or the 'offset' parameter in
+ OCILobWrite functions.
+ size (OUT) - LOB operation size in code points. Returned only
+ for LOB_TRIM and LOB_ERASE operations; otherwise,
+ a zero is returned.
+ This is the same as the 'new_length' parameter in
+ OCILobTrim or the 'amtp' parameter in OCILobErase
+ functions.
+ row_lcrp (IN) - XStream Row LCR pointer
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRLobInfoGet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext **column_name,
+ ub2 *column_name_len,
+ ub2 *column_dty,
+ oraub8 *column_flag,
+ ub4 *offset,
+ ub4 *size,
+ void *row_lcrp,
+ ub4 mode);
+
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCILCRLobInfoSet - OCI LCR SET LOB INFO
+DESCRIPTION
+ Sets the LOB information for a given piece-wise LOB LCR.
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ column_name (IN) - Pointer to the LOB column name.
+ column_name_len(IN) - Length of LOB column name without the NULL
+ terminator.
+ column_dty (IN) - LOB column dty - either SQLT_CHR (for CLOB) or
+ SQLT_BIN (for BLOB).
+ column_flag (IN) - LOB column flag.
+ Possible bit values are OCI_LCR_COLUMN_* flags
+ listed above.
+ offset (IN) - LOB operation offset in code points. Returned only
+ for LOB_TRIM and LOB_WRITE operations; otherwise,
+ a zero is returned.
+ This is the same as the 'soffset' parameter for
+ OCILobErase or the 'offset' parameter in
+ OCILobWrite functions.
+ size (IN) - LOB operation size in code points. Returned only
+ for LOB_TRIM and LOB_ERASE operations; otherwise,
+ a zero is returned.
+ This is the same as the 'new_length' parameter in
+ OCILobTrim or the 'amtp' parameter in OCILobErase
+ functions.
+ row_lcrp (IN/OUT)- XStream Row LCR pointer
+ mode (IN) - mode
+NOTES
+ - For now, specify OCI_DEFAULT for mode
+------------------------------------------------------------------------------=
+*/
+sword OCILCRLobInfoSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *column_name,
+ ub2 column_name_len,
+ ub2 column_dty,
+ oraub8 column_flag,
+ ub4 offset,
+ ub4 size,
+ void *row_lcrp,
+ ub4 mode);
+
+/*---------------------------------------------------------------------------
+ XSTREAM OUT FUNCTIONS
+ ---------------------------------------------------------------------------*/
+
+/*------------------------- OCIXStreamOutAttach -----------------------------*/
+/*
+ NAME
+ OCIXStreamOutAttach - OCI Attach to XStream Out
+ DESCRIPTION
+ Given the name of the server process, attach to the outbound server.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle for error reporting
+ server_name (IN) - Server name.
+ server_name_len (IN) - Length of server name.
+ last_position (IN) - last rcv position. (Optional)
+ last_position_len (IN) - Length of last_position.
+ mode (IN) - Mode flags (see below)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ Specify OCI_DEFAULT for the mode parameter.
+
+ The name of the outbound server must be provided because multiple
+ outbound servers can be configured in one Oracle instance. This call
+ returns OCI_ERROR if it encounters any error while attaching to the
+ outbound server.
+
+ The last_position parameter is used to establish the starting point
+ of the stream. This call returns OCI_ERROR if the specified position
+ is non-null and less than the server's processed low-watermark;
+ otherwise, LCRs with position greater than last_position will be
+ sent to the user.
+
+ If last_position is null then the stream will start from the processed
+ low-watermark maintained in the server.
+*/
+
+sword OCIXStreamOutAttach (OCISvcCtx *svchp, OCIError *errhp,
+ oratext *server_name, ub2 server_name_len,
+ ub1 *last_position,
+ ub2 last_position_len,
+ ub4 mode);
+
+/* Valid modes for OCIXStreamOutAttach call */
+#define OCIXSTREAM_OUT_ATTACH_RESERVED_1 (0x00000001)
+/* Application is in charge of freeing the LCRs from the outbound server */
+#define OCIXSTREAM_OUT_ATTACH_APP_FREE_LCR (0x00000002)
+
+/*---------------------- OCIXStreamOutProcessedLWMSet ----------------------*/
+/*
+ NAME
+ OCIXStreamOutProcessedLWMSet - Set Processed Low-Watermark
+ DESCRIPTION
+ Sets the processed low-watermark maintained at the client.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle for error reporting
+ processed_low_position (IN) - processed low position.
+ processed_low_position_len (IN) - processed low position length.
+ mode (IN) - mode for future extension. (Not used
+ currently).
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+
+ NOTES
+ The processed low-watermark denotes all LCRs at or below this position
+ have been processed. After successfully attaching to an XStream
+ outbound server, a local copy of the processed low-watermark is
+ maintained at the client. Periodically, this watermark is sent to the
+ server so that archived logs containing already processed transactions
+ can be purged.
+
+ The following API is used to update the local copy of the processed
+ low-watermark. It can be called anytime between OCIXStreamOutAttach
+ and OCIXStreamOutDetach calls. Clients, using the callback mechanism
+ to stream LCRs from the server, can invoke this API while
+ in the callback functions.
+*/
+
+sword OCIXStreamOutProcessedLWMSet (OCISvcCtx *svchp, OCIError *errhp,
+ ub1 *processed_low_position,
+ ub2 processed_low_position_len,
+ ub4 mode);
+
+
+/*-------------------- OCICallbackXStreamOutLCRProcess ----------------------*/
+/*
+ NAME
+ OCICallbackXStreamOutLCRProcess - Callback to process each LCR received
+ DESCRIPTION
+ This callback is invoked during OCIXStreamOutLCRCallbackReceive
+ to process each LCR received from the outbound server.
+ PARAMETERS
+ usrctxp (IN/OUT) - Ptr to the user context.
+ lcrp (IN) - Pointer to the LCR just received.
+ lcrtyp (IN) - LCR type (OCI_LCR_XROW / OCI_LCR_XDDL)
+ flag (IN) - If OCI_XSTREAM_MORE_ROW_DATA is set,
+ this means the current LCR has more
+ chunk data.
+ RETURNS
+ This callback function must return OCI_CONTINUE to continue processing
+ OCIXStreamOutLCRCallbackReceive call. Any return code other than
+ OCI_CONTINUE signals that the client wants to terminate
+ OCIXStreamOutLCRCallbackReceive immediately.
+*/
+typedef sb4 (*OCICallbackXStreamOutLCRProcess) (void *usrctxp, void *lcrp,
+ ub1 lcrtyp, oraub8 flag);
+
+
+/*-------------------- OCICallbackXStreamOutChunkProcess --------------------*/
+/*
+ NAME
+ OCICallbackXStreamOutChunkProcess - Callback to process each chunk
+ DESCRIPTION
+ This callback is invoked during OCIXStreamOutLCRCallbackReceive
+ to process each chunk in an LCR.
+ PARAMETERS
+ usrctxp (IN/OUT) - Ptr to the user context.
+ column_name (IN) - Column name for the current chunk.
+ column_name_len (IN) - Length of column name.
+ column_dty (IN) - Chunk data type (SQLT_CHR or SQLT_BIN).
+ column_flag (IN) - LCR column flags. Possible bit values are
+ OCI_LCR_COLUMN_* flags listed above.
+ column_csid (IN) - Column character set id. Relevant only if
+ the column is an XMLType column (i.e.,
+ column_flag has OCI_LCR_COLUMN_XML_DATA bit set).
+ chunk_bytes (IN) - Chunk data length in bytes.
+ chunk_data (IN) - Chunk data buffer.
+ flag (IN) - If OCI_XSTREAM_MORE_ROW_DATA is set, this means
+ the current LCR has more chunks.
+ RETURNS
+ This callback function must return OCI_CONTINUE to continue processing
+ OCIXStreamOutLCRCallbackReceive call. Any return code other than
+ OCI_CONTINUE signals that the client wants to terminate
+ OCIXStreamOutLCRCallbackReceive immediately.
+*/
+typedef sb4 (*OCICallbackXStreamOutChunkProcess)
+ (void *usrctxp, oratext *column_name, ub2 column_name_len,
+ ub2 column_dty, oraub8 column_flag, ub2 column_csid,
+ ub4 chunk_bytes, ub1 *chunk_data, oraub8 flag);
+
+/*-------------------- OCIXStreamOutLCRCallbackReceive ----------------------*/
+/*
+ NAME
+ OCIXStreamOutLCRCallbackReceive - OCI Receive LCR stream using Callbacks
+ DESCRIPTION
+ This API is used to get the LCR stream from the outbound server using
+ callbacks to gain better performance. The user must supply a callback
+ function to be invoked for each LCR received. If some row changes
+ in the stream may contain LOB/LONG/XMLType columns then the data for
+ those columns are returned to the user in chunks. To receive those row
+ changes, the user must provide a second callback to be invoked to
+ process each chunk data.
+
+ If there is an LCR available in the stream, the processlcr_cb function
+ is invoked immediately. After the processlcr_cb function exits, if the
+ current LCR contains additional chunks then the processchunk_cb function
+ is invoked for each chunk belonging to that LCR.
+
+ If there is no LCR in the stream when the idle timeout expires (see
+ OCI_ATTR_XSTREAM_IDLE_TIMEOUT), this call returns a null LCR with
+ OCI_SUCCESS code.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle for error reporting
+ processlcr_cb (IN) - Client callback function for each LCR.
+ processchunk_cb (IN) - Client callback function for each
+ chunk.
+ usrctxp (IN) - Client context. (Optional)
+ fetch_low_position (OUT)- Fetch low watermark. (Optional)
+ fetch_low_position_len (OUT)- Fetch low watermark length.
+ mode (IN) - mode for future extension. (Not used
+ currently).
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ - The fetch low watermark is used to indicate all transactions
+ with commit position below this have been received by the XStream
+ outbound server.
+
+ - If the LCR contains non-chunked column(s), the duration of that LCR is
+ limited to the processlcr_cb function. If the LCR contains some
+ chunk data then the duration of the LCR is extended until all the
+ chunks have been processed (that is, when the flag passing to
+ processchunk_cb function does not have OCI_XSTREAM_MORE_ROW_DATA flag
+ set). If the user wants to access the LCR data at a later time, a
+ copy of the LCR must be made. The client callback should not modify
+ or free the LCR passing to the callback.
+
+ If the OCIXSTREAM_OUT_ATTACH_APP_FREE_LCR mode is passed to
+ OCIXStreamOutAttach call then the application is in charge of calling
+ OCILCRFree to free each LCR. Note, this mode does not apply to the
+ chunk data associated with each LCR. Each chunk data is freed
+ immediately after each OCIXStreamOutChunkReceive call.
+
+ - The given usrctxp is passed to both callbacks.
+
+ - An ACK interval is the interval in seconds which the outbound
+ server receives the processed LWM or the inbound server sends
+ the processed LWM. The default ACK interval is 30 seconds. This
+ value can be changed by setting the OCI_ATTR_XSTREAM_ACK_INTERVAL
+ attribute using OCIAttrSet API. This attribute is checked only
+ during the Attach call; thus, it must be set before invoking this API.
+
+ - The idle timeout is the interval in seconds after which the current
+ call will terminate if there is no LCR in the stream. The default
+ idle timeout is one second. This value can be changed by setting the
+ OCI_ATTR_XSTREAM_IDLE_TIMEOUT attribute using OCIAttrSet API. This
+ attribute is checked only during the Attach call; thus, it must be
+ set before invoking this API.
+
+ - The outbound server ends each call at the transaction boundary
+ after an ACK interval has elapsed since the start of the call
+ or when the idle timeout expires. This API returns the fetch
+ low watermark at the end of each call.
+*/
+sword OCIXStreamOutLCRCallbackReceive(
+ OCISvcCtx *svchp, OCIError *errhp,
+ OCICallbackXStreamOutLCRProcess processlcr_cb,
+ OCICallbackXStreamOutChunkProcess processchunk_cb, void *usrctxp,
+ ub1 *fetch_low_position, ub2 *fetch_low_position_len, ub4 mode);
+
+/*---------------------- OCIXStreamOutLCRReceive -------------------------*/
+/*
+ NAME
+ OCIXStreamOutLCRReceive - Receive LCR without using callback
+ DESCRIPTION
+ This API is used to receive an LCR from an outbound stream. If there
+ is an LCR available, this API immediately returns that LCR.
+ When there is no LCR available in the stream, this call returns a
+ null LCR after the idle timeout (see OCI_ATTR_XSTREAM_IDLE_TIMEOUT)
+ has expired.
+
+ The client must not modify the LCR received from the outbound server.
+ The duration of each LCR is until the next OCIXStreamOutLCRReceive call.
+ If the OCIXSTREAM_OUT_ATTACH_APP_FREE_LCR mode is passed to
+ OCIXStreamOutAttach call then the application is in charge of calling
+ OCILCRFree to free each LCR. Note, this mode does not apply to the
+ chunk data associated with each LCR. Each chunk data is freed
+ immediately after each OCIXStreamOutChunkReceive call.
+
+ To avoid network round trip for every OCIXStreamOutLCRReceive call,
+ the connection is tied to this call to let the server fill up
+ the network buffer with LCRs so subsequent calls can quickly receive
+ the LCRs from the network. The server ends each call at the
+ transaction boundary after an ACK interval has elapsed since the start
+ of the call or when the idle timeout expires. See
+ OCI_ATTR_XSTREAM_ACK_INTERVAL & OCI_ATTR_XSTREAM_IDLE_TIMEOUT
+ attributes.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle for error reporting
+ lcrp (OUT) - Pointer to the LCR received from the
+ stream.
+ lcrtype (OUT) - LCR type (OCI_LCR_XROW / OCI_LCR_XDDL)
+ flag (OUT) - If OCI_XSTREAM_MORE_ROW_DATA is set,
+ it means the current LCR has more
+ chunk data.
+ fetch_low_position (OUT)- Fetch low watermark. (Optional)
+ fetch_low_position_len (OUT)- Fetch low watermark length.
+ mode (IN) - mode for future extension. (Not used
+ currently).
+ RETURNS
+ - OCI_STILL_EXECUTING means the current call is still in progress. The
+ connection associated with the specified service context handle is
+ still tied to this call for streaming the LCRs from the server. An
+ error is returned if the user attempts to use the same connection to
+ execute any OCI calls that require database round trip, for example,
+ OCIStmtExecute, OCIStmtFetch, OCILobRead, etc. OCILcr* calls are
+ local calls; thus, they are valid while the stream is in progress.
+ - OCI_SUCCESS means the current call is completed. User is free to
+ execute OCIStmt*, OCILob*, etc. from the same service context.
+ - OCI_ERROR means the current call encounters some errors. Use
+ OCIErrorGet to obtain information about the error.
+
+ NOTES
+ This call always returns a null LCR when the return code is OCI_SUCCESS.
+ In addition, it returns the fetch low position to denote the outbound
+ server has received all transactions with commit position lower than or
+ equal to this value.
+
+ The fetch low watermark is used to indicate all transactions
+ with commit position below this have been received by the XStream
+ outbound server.
+*/
+
+sword OCIXStreamOutLCRReceive(
+ OCISvcCtx *svchp, OCIError *errhp,
+ void **lcrp,
+ ub1 *lcrtype,
+ oraub8 *flag,
+ ub1 *fetch_low_position,
+ ub2 *fetch_low_position_len,
+ ub4 mode);
+
+/*-------------------------- OCIXStreamOutChunkReceive ---------------------*/
+/*
+ NAME
+ OCIXStreamOutChunkReceive - Receive Chunk data
+ DESCRIPTION
+ Receives next chunk of LCR data from XStream Outbound server.
+ This API can only be called while OCIXStreamOutLCRReceive call is
+ in progress.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors should be reported
+ column_name (OUT) - Name of column for which data is retrieved.
+ column_name_len (OUT) - Length of column name.
+ column_dty (OUT) - LCR column data type.
+ column_flag (OUT) - LCR column flag. Possible bit values are
+ OCI_LCR_COLUMN_LOB_DATA
+ OCI_LCR_COLUMN_LONG_DATA
+ OCI_LCR_COLUMN_EMPTY_LOB
+ OCI_LCR_COLUMN_LAST_CHUNK
+ OCI_LCR_COLUMN_AL16UTF16
+ OCI_LCR_COLUMN_ENCRYPTED
+ OCI_LCR_COLUMN_NCLOB
+ OCI_LCR_COLUMN_XML_DATA
+ OCI_LCR_COLUMN_XML_DIFF
+ column_csid (OUT) - Column character set id. This is returned only
+ if the column is an XMLType column (i.e.,
+ column_flag has OCI_LCR_COLUMN_XML_DATA bit
+ set).
+ chunk_bytes (OUT) - Number of bytes in output buffer.
+ chunk_data (OUT) - Pointer to the chunk data in the LCR.
+ Client must not de-allocate this pointer.
+ flag (OUT) - If OCI_XSTREAM_MORE_ROW_DATA is set, it means
+ the current LCR has more data coming.
+ mode (IN) - mode for future extension. (Not used currently).
+ RETURNS
+ OCI_SUCCESS - Check colname_len and chunk_bytes to determine the
+ data just read.
+ OCI_ERROR - Error encountered. Execute OCIErrorGet to get information
+ about the error.
+ NOTES
+ - If the return code is OCI_SUCCESS, client should check chunk_bytes to
+ determine the # of bytes read and check column_name to determine
+ which LCR column the data associated with.
+
+ - All the chunks from one LOB/LONG/XMLType column are returned entirely
+ before the chunk value for the next LOB/LONG/XMLType column is
+ returned.
+
+ - The is no fixed ordering on how the LOB/LONG/XMLType columns is
+ returned. Users must check the column name to determine which column.
+ The column_flag will have OCI_LCR_COLUMN_LAST_CHUNK bit set when this
+ function returns the last chunk of each column.
+
+ - This call returns a null column name and null chunk data if it's
+ invoked when the current LCR contains only non-chunked columns.
+
+ - If OCIXStreamOutLCRReceive call returns OCI_XSTREAM_MORE_ROW_DATA flag
+ then the user must iteratively call OCIXStreamOutChunkReceive to
+ retrieve all the chunks belonging to the current row change before
+ calling the next OCIXStreamOutLCRReceive.
+
+*/
+sword OCIXStreamOutChunkReceive(OCISvcCtx *svchp, OCIError *errhp,
+ oratext **column_name, ub2 *column_name_len,
+ ub2 *column_dty, oraub8 *column_flag,
+ ub2 *column_csid, ub4 *chunk_bytes,
+ ub1 **chunk_data, oraub8 *flag, ub4 mode);
+
+/*------------------------- OCIXStreamOutDetach -----------------------------*/
+/*
+ NAME
+ OCIXStreamOutDetach - OCI Detach from XStream Out
+ DESCRIPTION
+ Detaches from the attached XStream outbound server. This call sends the
+ current local processed low-watermark to the server before detaching
+ from the outbound server. The outbound server automatically restarts
+ after this call. This API returns OCI_ERROR if it is invoked while a
+ ReceiveLCR call is in progress.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors should be reported
+ mode (IN) - mode for future extension. (Not used currently).
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ - The processed_low_position is passed to the server so it can update its
+ copy. This value if provided must be greater than or equal to the
+ value maintained in the server; otherwise, an error is returned.
+*/
+sword OCIXStreamOutDetach (OCISvcCtx *svchp, OCIError *errhp, ub4 mode);
+
+/*---------------------------------------------------------------------------
+ XSTREAM IN FUNCTIONS
+ ---------------------------------------------------------------------------*/
+
+/*------------------------ OCIXStreamInAttach -------------------------------*/
+/*
+ NAME
+ OCIXStreamInAttach - OCI XStream In Attach
+ DESCRIPTION
+ Attaches to the specified XStream inbound server.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ server_name (IN) - XStream inbound server name.
+ server_name_len (IN) - Length of server name.
+ source_name (IN) - source name to identify the data src.
+ source_name_len (IN) - Length of source name.
+ last_position (OUT) - Last position received by inbound
+ server. Optional. If specified must
+ pre-allocate OCI_LCR_MAX_POSITION_LEN
+ bytes for return value.
+ last_position_len (OUT) - Length of last_position. Must be
+ non-NULL if last_position is non-NULL.
+ mode (IN) - Mode flags (For future extension.
+ (Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ The last_position parameter is returned to establish the starting point
+ to resume the inbound stream. The client should start sending LCRs with
+ positions greater than the last_position since the inbound server will
+ ignore all LCRs with positions less than or equal to this value.
+*/
+
+sword OCIXStreamInAttach(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *server_name,
+ ub2 server_name_len,
+ oratext *source_name,
+ ub2 source_name_len,
+ ub1 *last_position,
+ ub2 *last_position_len,
+ ub4 mode);
+
+/*--------- Valid modes for OCIXStreamInAttach -------------*/
+/* Restart inbound server regardless if it's in DISABLED or ABORTED state. */
+#define OCIXSTREAM_IN_ATTACH_RESTART_INBOUND (0x00000001)
+
+/*-------------------- OCICallbackXStreamInLCRCreate ------------------------*/
+/*
+ NAME
+ OCICallbackXStreamInLCRCreate - Callback to create an LCR
+ DESCRIPTION
+ This callback is invoked during OCIXStreamInLCRCallbackSend
+ to create each LCR to be sent to the inbound server.
+ PARAMETERS
+ usrctxp (IN/OUT) - Ptr to the user context
+ lcrp (OUT) - Pointer to the LCR to be sent
+ lcrtyp (OUT) - LCR type (OCI_LCR_XROW / OCI_LCR_XDDL)
+ flag (OUT) - If OCI_XSTREAM_MORE_ROW_DATA is set,
+ this means the current LCR has more
+ chunk data.
+ RETURNS
+ This callback function must return OCI_CONTINUE to continue processing
+ OCIXStreamInLCRCallbackSend call. Any return code other than
+ OCI_CONTINUE signals that the client wants to terminate
+ OCIXStreamInLCRCallbackSend immediately.
+*/
+typedef sb4 (*OCICallbackXStreamInLCRCreate)(
+ void *usrctxp,
+ void **lcrp,
+ ub1 *lcrtyp,
+ oraub8 *flag);
+
+/*-------------------- OCICallbackXStreamInChunkCreate --------------------*/
+/*
+ NAME
+ OCICallbackXStreamInChunkCreate - Callback to create each chunk
+ DESCRIPTION
+ This callback is invoked during OCIXStreamInLCRCallbackSend
+ to create each chunk to be sent to the inbound server.
+ PARAMETERS
+ usrctxp (IN/OUT) - Ptr to the user context.
+ column_name (OUT) - Column name for the current chunk.
+ column_name_len (OUT) - Length of column name.
+ column_dty (OUT) - Chunk data type (SQLT_CHR or SQLT_BIN).
+ column_flag (OUT) - LCR column flags. Possible bit values are
+ OCI_LCR_COLUMN_* flags listed above.
+ column_csid (OUT) - Column character set id. Relevant only if
+ the column is an XMLType column (i.e.,
+ column_flag has OCI_LCR_COLUMN_XML_DATA bit
+ set).
+ chunk_bytes (OUT) - Chunk data length in bytes.
+ chunk_data (OUT) - Chunk data buffer.
+ flag (OUT) - If OCI_XSTREAM_MORE_ROW_DATA is set, this means
+ the current LCR has more chunks.
+ RETURNS
+ This callback function must return OCI_CONTINUE to continue processing
+ OCIXStreamInLCRCallbackSend call. Any return code other than
+ OCI_CONTINUE signals that the client wants to terminate
+ OCIXStreamInLCRCallbackSend immediately.
+*/
+typedef sb4 (*OCICallbackXStreamInChunkCreate)(
+ void *usrctxp,
+ oratext **column_name,
+ ub2 *column_name_len,
+ ub2 *column_dty,
+ oraub8 *column_flag,
+ ub2 *column_csid,
+ ub4 *chunk_bytes,
+ ub1 **chunk_data,
+ oraub8 *flag);
+
+/*--------------------- OCIXStreamInLCRCallbackSend ------------------------*/
+/*
+ NAME
+ OCIXStreamInLCRCallbackSend - OCI XStream In Send LCR to Inbound Server
+ DESCRIPTION
+ Sends LCR stream to XStream inbound server using callbacks.
+ The API invokes createlcr_cb function to obtain each LCR to send to the
+ server. If the return flag from the createlcr_cb function has
+ OCI_XSTREAM_MORE_ROW_DATA bit set, then it invokes createchunk_cb
+ procedure to obtain each chunk. It repeatedly calls createchunk_cb
+ function while the flag returned from this callback has
+ OCI_XSTREAM_MORE_ROW_DATA bit set. When this bit is not set, this API
+ cycles back to invoke createlcr_cb function to get the next LCR.
+ This cycle is repeated until the createlcr_cb function returns a null
+ LCR or when an ACK interval has elapsed since the start of the call.
+ See OCI_ATTR_XSTREAM_ACK_INTERVAL attribute.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ createlcr_cb (IN) - Callback function to be invoked
+ to generate an LCR for streaming.
+ Cannot be null.
+ createchunk_cb (IN) - Callback function to be invoked to
+ create each chunk. Can be null if the
+ user does not need to send any LCR with
+ LOB/LONG/XMLType columns. OCI_ERROR
+ will be returned if this argument is
+ null and the user attempts to send an
+ LCR with additional chunk data.
+ usrctxp (IN) - Client context to pass to both
+ callback functions.
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ None
+*/
+
+sword OCIXStreamInLCRCallbackSend(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ OCICallbackXStreamInLCRCreate createlcr_cb,
+ OCICallbackXStreamInChunkCreate createchunk_cb,
+ void *userctxp,
+ ub4 mode);
+
+/*---------------------------- OCIXStreamInLCRSend --------------------------*/
+/*
+ NAME
+ OCIXStreamInLCRSend - OCI XStream In Send LCR to Inbound Server
+ DESCRIPTION
+ Sends LCR stream to XStream inbound server without using callbacks.
+ To avoid a network round trip for every OCIXStreamInLCRSend call,
+ the connection is tied to this call for at least the duration
+ specified by the OCI_ATTR_XSTREAM_ACK_INTERVAL attribute.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ lcrp (IN) - Pointer to the LCR to send. Cannot
+ be null.
+ lcrtype (IN) - LCR type (OCI_LCR_XROW / OCI_LCR_XDDL)
+ flag (IN) - If OCI_XSTREAM_MORE_ROW_DATA is set,
+ it means the current LCR has more
+ chunk data.
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ - OCI_STILL_EXECUTING means the current call is still in progress. The
+ connection associated with the specified service context handle is
+ still tied to this call for streaming the LCRs to the server. An error
+ is returned if the user attempts to use the same connection to
+ execute any OCI calls that require database round trip, for example,
+ OCIStmtExecute, OCIStmtFetch, OCILobRead, etc. OCILcr* calls are
+ local calls; thus, they are valid while this call is in progress.
+ - OCI_SUCCESS means the current call is completed. User is free to
+ execute OCIStmt*, OCILob*, etc. from the same service context.
+ - OCI_ERROR means this call encounters some errors. Use OCIErrorGet to
+ obtain information about the error.
+*/
+sword OCIXStreamInLCRSend(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ void *lcrp,
+ ub1 lcrtype,
+ oraub8 flag,
+ ub4 mode);
+
+/*----------------------------- OCIXStreamInChunkSend -----------------------*/
+/*
+ NAME
+ OCIXStreamInChunkSend - Send Chunk
+ DESCRIPTION
+ Sends the given chunk of column data to XStream Inbound server.
+ This chunk is associated with the LCR that is sent by the
+ most recent OCIXStreamInLCRSend call prior to this call.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors should be reported
+ column_name (IN) - Name of column for which data is sent.
+ Column names must be canonicalized and must
+ follow Oracle naming conventions.
+ column_name_len (IN) - Length of column name.
+ column_dty (IN) - LCR column data type (must be SQLT_CHR or
+ SQLT_BIN).
+ column_flag (IN) - LCR column flags. Possible bit values are
+ OCI_LCR_COLUMN_LOB_DATA
+ OCI_LCR_COLUMN_LONG_DATA
+ OCI_LCR_COLUMN_EMPTY_LOB
+ OCI_LCR_COLUMN_LAST_CHUNK
+ OCI_LCR_COLUMN_AL16UTF16
+ OCI_LCR_COLUMN_ENCRYPTED
+ OCI_LCR_COLUMN_NCLOB
+ OCI_LCR_COLUMN_XML_DATA
+ OCI_LCR_COLUMN_XML_DIFF
+ column_csid (IN) - Column character set id. This is required only
+ if the column is an XMLType column (i.e.,
+ column_flag has OCI_LCR_COLUMN_XML_DATA bit set).
+ chunk_bytes (IN) - Chunk data length in bytes.
+ chunk_data (IN) - Chunk data buffer.
+ flag (IN) - If OCI_XSTREAM_MORE_ROW_DATA is set, it means
+ the current LCR has more data coming.
+ mode (IN) - mode for future extension. (Not used currently).
+RETURNS
+ OCI_SUCCESS - Successful call.
+ OCI_ERROR - Error encountered. Execute OCIErrorGet to get information
+ about the error.
+NOTES
+ - This function must be called while OCIXStreamInLCRSend is in progress.
+
+ - This function is valid only if the associated LCR's cmd type is
+ INSERT, UPDATE or LOB_WRITE. It can be invoked multiple times for the
+ same LCR.
+
+ - This API is not valid for LOB_ERASE and LOB_TRIM LCRs.
+
+ - The chunk values for different columns can not be interleaved. If a
+ column contains multiple chunks, this procedure must be called
+ consecutively using the same column name before proceeding to a new column.
+ The ordering in which the LOB/LONG/XMLType column values are set is
+ irrelevant.
+
+ - The OCI_LCR_COLUMN_LAST_CHUNK must be specified for the last chunk of
+ each column.
+
+ - Only one column can be specified for LOB_WRITE operation.
+
+ - For NCLOB or varying width CLOB, the input buffer must be in
+ AL16UTF16 format.
+
+ - For INSERT operation, each LOB/LONG/XMLType column, with value set using
+ OCIXStreamInChunkSend, must be included in the current LCR's NEW
+ column list. The value of that LOB/LONG/XMLType column must be set to
+ null and must have OCI_LCR_COLUMN_EMPTY_LOB flag defined.
+
+*/
+sword OCIXStreamInChunkSend (OCISvcCtx *svchp, OCIError *errhp,
+ oratext *column_name, ub2 column_name_len,
+ ub2 column_dty, oraub8 column_flag,
+ ub2 column_csid, ub4 chunk_bytes,
+ ub1 *chunk_data, oraub8 flag, ub4 mode);
+
+/*--------------------- OCIXStreamInDetach ----------------------------*/
+/*
+ NAME
+ OCIXStreamInDetach - OCI XStream In Detach from Inbound Server
+ DESCRIPTION
+ Detaches from XStream inbound server and returns the inbound server's
+ processed low-watermark.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ processed_low_position (OUT) - Inbound server's processed low
+ position. Must pre-allocate
+ OCI_LCR_MAX_POSITION_LEN bytes for
+ output buffer.
+ processed_low_position_len(OUT)- Processed_low_position length.
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ None
+*/
+sword OCIXStreamInDetach(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub1 *processed_low_position,
+ ub2 *processed_low_position_len,
+ ub4 mode);
+
+/*--------- Valid modes for OCIXStreamInDetach -------------*/
+/* Restart inbound server when calling detach. */
+#define OCIXSTREAM_IN_DETACH_RESTART_INBOUND (0x00000001)
+
+/*--------------------- OCIXStreamInProcessedLWMGet -------------------------*/
+/*
+ NAME
+ OCIXStreamInProcessedLWMGet - OCI XStream In Get LowWatermark
+ DESCRIPTION
+ Returns XStream inbound server's processed low watermark
+ cached at the client.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ processed_low_position (OUT) - Inbound server's cached processed
+ low position. Must pre-
+ allocate OCI_LCR_MAX_POSITION_LEN
+ bytes for output buffer.
+ processed_low_position_len (OUT) - Processed_low_position length.
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ None
+*/
+sword OCIXStreamInProcessedLWMGet(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub1 *processed_low_position,
+ ub2 *processed_low_position_len,
+ ub4 mode);
+
+/*-------------------------- OCIXStreamInFlush ------------------------------*/
+/*
+ NAME
+ OCIXStreamInFlush - OCI XStream In Flush network
+ DESCRIPTION
+ Flushes network and terminates any in-progress OCIXStreamInLCRSend or
+ OCIXStreamInLCRCallbackSend call associated with the given service handle.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ mode (IN) - Mode flags (see below)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ Each call will incur a database round trip to get the server's processed
+ low-watermark, which the user can retrieve afterward using
+ OCIXStreamInProcessedLWMGet API. This API should be called only when
+ there is no LCR to send to the server and the client wants to know the
+ progress of the attached inbound server.
+
+ This call returns OCI_ERROR if it is invoked from the callback functions
+ of OCIXStreamInLCRCallbackSend API.
+
+ Client must have attached to an XStream inbound server prior to calling
+ this API.
+
+ Valid Mode flags:
+ - OCIXSTREAM_IN_FLUSH_WAIT_FOR_COMPLETE : flush network and wait for all
+ complete and rollback transactions sent to the inbound server to complete
+ before returning control to the client.
+
+*/
+sword OCIXStreamInFlush(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ ub4 mode);
+
+
+/*-------------------------- OCIXStreamInCommit -----------------------------*/
+/*
+ NAME
+ OCIXStreamInCommit - OCI XStream In Commit
+ DESCRIPTION
+ Commits current transaction
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle to which errors
+ should be reported
+ lcrp (IN) - Pointer to the LCR to send. Must
+ be a commit LCR.
+ mode (IN) - Mode flags (For future extension.
+ Not used currently)
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ The position of the input LCR must be higher than
+ DBA_XSTREAM_INBOUND_PROGRESS.APPLIED_HIGH_POSITION and the LCR's source
+ database must match DBA_APPLY_PROGRESS.SOURCE_DATABASE of the attached
+ inbound server.
+
+ Upon receiving this LCR, the inbound server will check if there is any
+ unapplied complete or rollback transaction remaining. If none is found
+ it inserts a row to the apply progress table based on the input LCR and
+ commit the current transaction; otherwise, it returns an error.
+
+ If there is any pre-commit handler defined, it will be executed when
+ this commit LCR is executed.
+*/
+sword OCIXStreamInCommit(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ void *lcrp,
+ ub4 mode);
+
+/*-------------------------- OCIXStreamInErrorGet ---------------------------*/
+/*
+ NAME
+ OCIXStreamInErrorGet - OCI XStream In Get Error Info
+ DESCRIPTION
+ Returns the first error encountered by the inbound server since the
+ Attach call.
+ PARAMETERS
+ svchp (IN/OUT) - OCI service handle
+ errhp (IN/OUT) - Error Handle
+ errcodep (OUT) - Error code
+ msgbuf (IN/OUT) - Pre-allocated message buffer
+ msg_bufsize (IN) - Message buffer size
+ msg_len (OUT) - Length of returned error message
+ txn_id (IN/OUT) - Pre-allocated txn id buffer
+ txn_id_bufsize (IN) - Txn_id buffer size
+ txn_id_len (OUT) - Length of returned txn id
+ RETURNS
+ OCI_SUCCESS or OCI_ERROR.
+ NOTES
+ The maximum size for the returned txn id is OCI_LCR_MAX_TXID_LEN. If the
+ allocated buffer for txn_id is too small, this routine returns ORA-29258.
+ The maximum size for the returned error msg is OCI_ERROR_MAXMSG_SIZE. If
+ the allocated size for msgbuf is too small, the returned message will be
+ truncated.
+*/
+sword OCIXStreamInErrorGet(
+ OCISvcCtx *svchp,
+ OCIError *errhp,
+ sb4 *errcodep,
+ oratext *msgbuf,
+ ub2 msg_bufsize,
+ ub2 *msg_len,
+ oratext *txn_id,
+ ub2 txn_id_bufsize,
+ ub2 *txn_id_len);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCIXStreamOutSessionSet - OCI XStream Out Session Set attribute
+DESCRIPTION
+ Sets session attributes for XStream Out
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ attribute_name (IN) - Attribute name
+ attribute_name_len (IN) - Attribute name length
+ attribute_value (IN) - Attribute value
+ attribute_value_len (IN) - Attribute value length
+ attribute_dty (IN) - Attribute dty
+ mode (IN) - mode
+RETURNS
+ OCI_SUCCESS if successful, OCI_ERROR otherwise
+NOTES
+------------------------------------------------------------------------------=
+*/
+sword OCIXStreamOutSessionSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *attribute_name,
+ ub2 attribute_name_len,
+ void *attribute_value,
+ ub2 attribute_value_len,
+ ub2 attribute_dty,
+ ub4 mode);
+
+/*
+------------------------------------------------------------------------------=
+NAME
+ OCIXStreamInSessionSet - OCI XStream In Session Set attribute
+DESCRIPTION
+ Sets session attributes for XStream In
+PARAMETERS
+ svchp (IN) - OCI service context
+ errhp (IN) - OCI Error Handle
+ attribute_name (IN) - Attribute name
+ attribute_name_len (IN) - Attribute name length
+ attribute_value (IN) - Attribute value
+ attribute_value_len (IN) - Attribute value length
+ attribute_dty (IN) - Attribute dty
+ mode (IN) - mode
+RETURNS
+ OCI_SUCCESS if successful, OCI_ERROR otherwise
+NOTES
+------------------------------------------------------------------------------=
+*/
+sword OCIXStreamInSessionSet(OCISvcCtx *svchp,
+ OCIError *errhp,
+ oratext *attribute_name,
+ ub2 attribute_name_len,
+ void *attribute_value,
+ ub2 attribute_value_len,
+ ub2 attribute_dty,
+ ub4 mode);
+
+/*---------------------------------------------------------------------------
+ INTERNAL FUNCTIONS
+ ---------------------------------------------------------------------------*/
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OCIXSTREAM_ORACLE */