/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
#ifndef SQLCLI_HDR
#define SQLCLI_HDR

/* -*-C-*-
******************************************************************************
*
* File:         SQLCLI.h
* Description:  Declarations for the NonStop SQL CLI
* Language:     C and C++.  The comment style herein must be C, not C++.
*
******************************************************************************
*/


#ifdef __gnu_linux__
#define NA_LINUX
#endif   /* __gnu_linux__ */

/* Size specific types used here */
typedef int             Int32;
typedef unsigned int    UInt32;
typedef long long int Int64;
typedef _int64 Int64;

#undef SQLCLI_LIB_FUNC

  #ifdef SQLCLI_LIB
	#define SQLCLI_LIB_FUNC __declspec( dllexport )
  #else
    #ifndef EXP_DLL
	#define SQLCLI_LIB_FUNC __declspec( dllimport )
    #else
	#define SQLCLI_LIB_FUNC
    #endif
  #endif
#ifdef NA_64BIT
  /* dg64 - get rid of __declspec */
  #undef SQLCLI_LIB_FUNC
  #define SQLCLI_LIB_FUNC
#endif

#ifdef __cplusplus
extern "C"
{
#endif

typedef Int32 SQLCTX_HANDLE;

#if !defined(_MSC_VER) && !defined(_int64)
/* _int64 is an MSVC builtin definition, but may be used elsewhere */ 
/* #define _int64 long long */
  typedef long long _int64;
#endif

/* Internal structure definitions version */
#define SQLCLI_CURRENT_VERSION 1
#define SQLCLI_STATEMENT_VERSION_1  1
#define SQLCLI_STATEMENT_VERSION_2  2

/* Functional conformance version */
#define CLI_VERSION 100L

/* structure to identify a module */
struct SQLMODULE_ID_t {
  Int32 version;
  const char * module_name;
  _int64 creation_timestamp;
  const char * charset; /* charset (encoded in ASCII, and null terminated) */
			 /* of the module name. */
  Int32 module_name_len;  /* length of the module name (in bytes) */
};


/* typedef the structure so that C compilers can use it without the 'struct' */
typedef struct SQLMODULE_ID_t SQLMODULE_ID;

/* specifies the way of naming an object in the CLI */
enum SQLOBJ_ID_NAME_MODE {
  stmt_name     =   1,          /* statement name as char string            */
  cursor_name   =   2,          /* cursor name as char string               */
  desc_name     =   3,          /* descriptor name as char string           */
  queryid_str   =   4,          /* Query id as char string                  */
  string_data   =  50,          /* string data passed in without a          */
                                /* descriptor. Used in certain cli calls    */
                                /* improve performance.                     */
  stmt_handle   = 101,          /* statement handle (generated by CLI)      */
  desc_handle   = 102,          /* descriptor handle (generated by CLI)     */
  stmt_via_desc = 201,          /* descriptor for a statement name          */
  curs_via_desc = 202,          /* descriptor for a cursor name             */
  desc_via_desc = 203           /* descriptor for a descriptor name         */
};

/* generic structure to pass names to the SQLCLI */
struct SQLCLI_OBJ_ID {
  Int32 version;                /* set to SQLCLI_CURRENT_VERSION if no tag  */
  Int32 name_mode;              /* see enum SQLOBJ_ID_NAME_MODE below       */
  const SQLMODULE_ID * module;  /* module name (leading part of name)       */
  const char * identifier;      /* actual identifier (one part name)        */
  void * handle;                /* handle, in addition or instead of a name */
  const char * charset;	/* charset (encoded in ASCII, and null terminated) */ 
                        /* of the identifier. */
  Int32 identifier_len;  /* length of the identifier (in bytes) */
  Int32 tag;             /* added in R1.8, used when version==SQLCLI_STATEMENT_VERSION_2 */
                        /* tag must be non-zero for nowaited operation      */
                        /* and zero for waited. */
};


/* structure to pass a statement identifier to the CLI             */
 
typedef struct SQLCLI_OBJ_ID SQLSTMT_ID;
typedef struct SQLCLI_OBJ_ID SQLCLI_STMT_ID;

/* structure to pass a descriptor name or handle to the CLI. */
typedef struct SQLCLI_OBJ_ID SQLDESC_ID;

/* specifies whether a descriptor is an input or output descriptor */
enum SQLWHAT_DESC {
  SQLWHAT_INPUT_DESC    =    1,
  SQLWHAT_OUTPUT_DESC   =    2
};

/* specifies a particular item in a descriptor entry */
enum SQLDESC_ITEM_ID {

  SQLDESC_TYPE          =    1, /* (numeric) data type, ANSI                */
  SQLDESC_DATETIME_CODE =    2, /* (numeric) datetime code a la ANSI        */

  SQLDESC_LENGTH        =    3, /* (numeric) length in chars, bits, ...     */
  SQLDESC_OCTET_LENGTH  =    4, /* (numeric) length in bytes                */
  SQLDESC_PRECISION     =    5, /* (numeric) precision (decimal or binary)  */
  SQLDESC_SCALE         =    7, /* (numeric) scale of the number            */
  SQLDESC_INT_LEAD_PREC =    8, /* (numeric) interval leading field precis. */

  SQLDESC_NULLABLE      =    9, /* (numeric) 0 = NOT NULL, 1 = nullable     */

  SQLDESC_CHAR_SET      =   10, /* (numeric) 1 part charset enum */
  SQLDESC_CHAR_SET_CAT  =   11, /* (string ) catalog part of the char set   */
  SQLDESC_CHAR_SET_SCH  =   12, /* (string ) schema part of the char set    */
  SQLDESC_CHAR_SET_NAM  =   13, /* (string ) 1 part charset name            */
  SQLDESC_COLLATION     =   14, /* (numeric) collation code                 */
  SQLDESC_COLL_CAT      =   15, /* (string ) catalog of the coll name       */
  SQLDESC_COLL_SCH      =   16, /* (string ) schema part of the coll name   */
  SQLDESC_COLL_NAM      =   17, /* (string ) 1 part collation name          */

  SQLDESC_NAME          =   18, /* (string ) column name                    */
  SQLDESC_UNNAMED       =   19, /* (numeric) 0 = named, 1 = unnamed col.    */
  SQLDESC_HEADING       =   20, /* (string ) heading of the column          */

  SQLDESC_IND_TYPE      =   21, /* (numeric) data type of the indicator var */
  SQLDESC_VAR_PTR       =   22, /* (numeric) pointer to the data            */
  SQLDESC_IND_PTR       =   23, /* (numeric) pointer to an indicator var.   */

  SQLDESC_RET_LEN       =   24, /* (numeric) actual char length of the data */
  SQLDESC_RET_OCTET_LEN =   25, /* (numeric) actual byte len of the data    */
  SQLDESC_VAR_DATA      =   26, /* (string ) the actual data                */
  SQLDESC_IND_DATA      =   27, /* (numeric) value of the indicator         */
  SQLDESC_TYPE_FS       =   28, /* (numeric) data type, SQL/MP FS internal  */

  SQLDESC_IND_LENGTH    =   29, /* (numeric) Length in chars of the ind var */
  SQLDESC_ROWSET_VAR_LAYOUT_SIZE   = 30,
  SQLDESC_ROWSET_IND_LAYOUT_SIZE   = 31,
  SQLDESC_ROWSET_SIZE              = 32,
  SQLDESC_ROWSET_HANDLE            = 33,
  SQLDESC_ROWSET_NUM_PROCESSED     = 34,
  SQLDESC_ROWSET_ADD_NUM_PROCESSED = 35,
  SQLDESC_ROWSET_STATUS_PTR        = 36,

  SQLDESC_TABLE_NAME               = 37,
  SQLDESC_SCHEMA_NAME              = 38,
  SQLDESC_CATALOG_NAME             = 39,

  SQLDESC_PARAMETER_MODE	   = 40, /* (numeric) the parameter mode
					     defined in enum PARAMETER_MODE */
  SQLDESC_ORDINAL_POSITION	   = 41, /* (numeric) the formal parameter
					     ordinal position */
  SQLDESC_PARAMETER_INDEX	   = 42, /* (numeric) the actual parameter
					    position */
  SQLDESC_DESCRIPTOR_TYPE          = 43, /* specify either the wide or narrow
					    descriptor type.
					    static descriptors default to wide,
					    dynamic descritpors default to
					    narrow. */
  SQLDESC_ROWSET_TYPE              = 44, /* of type enum ROWSET_TYPE.
					    Defined in SQLCLIdev.h(not 
					    externalized yet)
					    Specifies if this is a row-wise 
					    column-wise rowset */

  SQLDESC_ROWWISE_ROWSET_SIZE      = 45, /* number of rows in this rowset */
  SQLDESC_ROWWISE_ROWSET_ROW_LEN   = 46, /* length of each row */
  SQLDESC_ROWWISE_ROWSET_PTR       = 47, /* ptr to the start of rowset */
  SQLDESC_TEXT_FORMAT		   = 48, /* (string) Datatype in text format */
#ifdef _DEBUG
  SQLDESC_ROWWISE_VAR_OFFSET       = 49, /* testing logic offset of value in Attribute */
  SQLDESC_ROWWISE_IND_OFFSET       = 50, /* testing logic offset of indicator in Attributes */  
#endif
  SQLDESC_CASEINSENSITIVE          = 51, /* (numeric) 0 = casesensitive, 1 = caseinsensitive */
  SQLDESC_DATA_OFFSET              = 52, /* offset to actual data in the row */
  SQLDESC_NULL_IND_OFFSET          = 53, /* offset to null indicator in the row */
  SQLDESC_VC_IND_LENGTH            = 54, /* (numeric) Length of varchar length indicator */
  SQLDESC_ALIGNED_LENGTH           = 55, /* total aligned length: data + null + vclen + filler */
  SQLDESC_ROWWISE_ROWSET_PARTN_NUM = 56  /* partition num where rwrs buffer need to go to */
};

enum DESCRIPTOR_TYPE {
  DESCRIPTOR_TYPE_WIDE = 0,
  DESCRIPTOR_TYPE_NARROW = 1
};
  
enum PARAMETER_MODE { 
  PARAMETER_MODE_UNDEFINED	=    0,
  PARAMETER_MODE_IN		=    1,
  PARAMETER_MODE_INOUT		=    2, 
  PARAMETER_MODE_OUT		=    4
};

/* specifies the character set names corresponding to SQLDESC_CHAR_SET_NAM */
#ifndef SQLCHARSETSTRING_DEFINED
#define SQLCHARSETSTRING_DEFINED   1

#define SQLCHARSETSTRING_ISO88591          "ISO88591"
#define SQLCHARSETSTRING_KANJI             "KANJI"
#define SQLCHARSETSTRING_KSC5601           "KSC5601"
#define SQLCHARSETSTRING_UNICODE           "UCS2"
#define SQLCHARSETSTRING_LATIN             "LATIN"
#define SQLCHARSETSTRING_EUCJP             "EUCJP"
#define SQLCHARSETSTRING_GB2312            "GB2312"
#define SQLCHARSETSTRING_GBK               "GBK"
#define SQLCHARSETSTRING_GB18030           "GB18030"
#define SQLCHARSETSTRING_MB_KSC5601        "MB_KSC5601"
#define SQLCHARSETSTRING_SJIS              "SJIS"
#define SQLCHARSETSTRING_UTF8              "UTF8"
#define SQLCHARSETSTRING_BIG5              "BIG5"
#define SQLCHARSETSTRING_UCS2              SQLCHARSETSTRING_UNICODE
#define SQLCHARSETSTRING_ISO_MAPPING       "ISO_MAPPING"
#endif /* SQLCHARSETSTRING_DEFINED */

/* specifies the supported character sets (for numeric value version of 
SQL_EXEC_GETDESCITEM() and SQL_EXEC_SETDESCITEM() corresponding to SQLDESC_CHAR_SET)
*/
#ifndef SQLCHARSET_CODE_DEFINED
#define SQLCHARSET_CODE_DEFINED

enum SQLCHARSET_CODE {
  SQLCHARSETCODE_UNKNOWN        =  0,
  SQLCHARSETCODE_ISO88591       =  1,
  SQLCHARSETCODE_KANJI          = -1,
  SQLCHARSETCODE_KSC5601        = -2,
  SQLCHARSETCODE_SJIS           = 10,
  SQLCHARSETCODE_UCS2           = 11,
  SQLCHARSETCODE_EUCJP          = 12,
  SQLCHARSETCODE_BIG5           = 13,
  SQLCHARSETCODE_GB18030        = 14,
  SQLCHARSETCODE_UTF8           = 15,
  SQLCHARSETCODE_MB_KSC5601     = 16,
  SQLCHARSETCODE_GB2312         = 17,
  SQLCHARSETCODE_GBK            = 18,

  /* specifies that the user input string is in the same charset that is
     set as the value of the ISO_MAPPING default in the defaults table.
     Cli will pass in the input string as is to mxcmp without any translation.
     It will also tell mxcmp to treat any unprefixed literals in the 
     input string as iso88591. */
  SQLCHARSETCODE_ISO_MAPPING    = 9999
};
#endif /* SQLCHARSET_CODE_DEFINED */

/* specifies the supported character set conversions that are allowed */
#ifndef SQLCONVCHARSET_CODE_DEFINED
#define SQLCONVCHARSET_CODE_DEFINED

  enum SQLCONVCHARSET_CODE {
  SQLCONVCHARSETCODE_UNKNOWN    = 0,
  SQLCONVCHARSETCODE_UTF8       = 1,
  SQLCONVCHARSETCODE_UTF16      = 2,
  SQLCONVCHARSETCODE_UTF32      = 3,
  SQLCONVCHARSETCODE_ISO88591   = 4,
  SQLCONVCHARSETCODE_SJIS       = 5,
  SQLCONVCHARSETCODE_EUCJP      = 6,
  SQLCONVCHARSETCODE_KSC        = 7,
  SQLCONVCHARSETCODE_BIG5       = 8,
  SQLCONVCHARSETCODE_2312       = 9,
  SQLCONVCHARSETCODE_GB18030    = 10,
  SQLCONVCHARSETCODE_GBK        = 11
};
#endif /* SQLCONVCHARSET_CODE_DEFINED */

#define SQLCONV_REVERSE_INBYTES    2

/* specifies the collation names corresponding to SQLDESC_COLL_NAM */
#ifndef SQLCOLLATIONSTRING_DEFINED
#define SQLCOLLATIONSTRING_DEFINED 1
  
#define SQLCOLLATIONSTRING_DEFAULT         "DEFAULT"
#define SQLCOLLATIONSTRING_CZECH           "CZECH"
#define SQLCOLLATIONSTRING_CZECH_CI        "CZECH_CI"
#endif /* SQLCOLLATIONSTRING_DEFINED */

/* struct to hold one item of a descriptor entry */
typedef struct {
  Int32 item_id;                 /* which item (see SQLDESC_ITEM_ID)         */
  Int32 value_num_desc_entry;    /* value num's input descriptor entry num   */
  Int32 entry;                   /* number of the entry                      */
  long  num_val_or_len;          /* numeric value or length of string        */
  char * string_val;             /* string value (if not a numeric value)    */
} SQLDESC_ITEM;

/*  ANSI datatype values for item descriptor areas
 *   - see ANSI-92 Spec. Section 17.1 - Table 18
 *   - includes tandem extensions (negative values)
 */
enum SQLTYPE_CODE {
    /* CHAR/CHARACTER */
    SQLTYPECODE_CHAR     = 1,

    /* NUMERIC */
    SQLTYPECODE_NUMERIC  = 2,
    SQLTYPECODE_NUMERIC_UNSIGNED = -201,

    /* DECIMAL */
    SQLTYPECODE_DECIMAL  = 3,

    /* DECIMAL Tandem extensions */
    SQLTYPECODE_DECIMAL_UNSIGNED       = -301,
    SQLTYPECODE_DECIMAL_LARGE          = -302,
    SQLTYPECODE_DECIMAL_LARGE_UNSIGNED = -303,

    /* INTEGER/INT */
    SQLTYPECODE_INTEGER  = 4,

    /* INTEGER/INT Tandem extensions */
    SQLTYPECODE_INTEGER_UNSIGNED       = -401,
    SQLTYPECODE_LARGEINT               = -402,
	SQLTYPECODE_LARGEINT_UNSIGNED      = -405,

	/* TINYINT */
	SQLTYPECODE_TINYINT                = -403,
	SQLTYPECODE_TINYINT_UNSIGNED	   = -404,

    /* SMALLINT */
    SQLTYPECODE_SMALLINT = 5,

    /* SMALLINT Tandem extensions */
    SQLTYPECODE_SMALLINT_UNSIGNED      = -502,

    /*  Bit Precision int, Tandem extensions */
    SQLTYPECODE_BPINT_UNSIGNED         = -503,

    /* IEEE FLOAT (precision,scale)
     *    Internally converted to REAL or DOUBLE depending on
     *                 precision
     */
    SQLTYPECODE_IEEE_FLOAT    = 6,

    /* IEEE REAL
     *    Tandem note: precision == 22
     */
    SQLTYPECODE_IEEE_REAL     = 7,

    /* IEEE DOUBLE PRECISION
     *    Tandem note: precision == 54
     */
    SQLTYPECODE_IEEE_DOUBLE   = 8,

    /* Tandem FLOAT (precision,scale)
     *    Internally converted to REAL or DOUBLE depending on
     *                 precision
     */
    SQLTYPECODE_TDM_FLOAT    = -411,
    SQLTYPECODE_FLOAT = SQLTYPECODE_TDM_FLOAT,

    /* Tandem REAL
     *    Tandem note: precision == 22
     */
    SQLTYPECODE_TDM_REAL     = -412,
    SQLTYPECODE_REAL = SQLTYPECODE_TDM_REAL,

    /* Tandem DOUBLE PRECISION
     *    Tandem note: precision == 54
     */
    SQLTYPECODE_TDM_DOUBLE   = -413,
    SQLTYPECODE_DOUBLE = SQLTYPECODE_TDM_DOUBLE,

    /* DATE,TIME,TIMESTAMP */
    SQLTYPECODE_DATETIME = 9,

    /* TIMESTAMP */
    SQLTYPECODE_INTERVAL = 10,

    /* no ANSI value 11 */

    /* VARCHAR/CHARACTER VARYING */
    SQLTYPECODE_VARCHAR  = 12,

    /* SQL/MP stype VARCHAR with length prefix: Tandem Extension */
    SQLTYPECODE_VARCHAR_WITH_LENGTH = -601,

    /* LONG VARCHAR/ODBC CHARACTER VARYING */
    SQLTYPECODE_VARCHAR_LONG  = -1,		/* ## NEGATIVE??? */

	/* BOOLEAN */
	SQLTYPECODE_BOOLEAN  = -701,

    /* no ANSI value 13 */

    /* BIT */
    SQLTYPECODE_BIT      = 14,  /* not supported */

    /* BIT VARYING */
    SQLTYPECODE_BITVAR   = 15   /* not supported */
};

/* #ifndef SQLDTCODE_DATE */
/* specifies the type of datetime data type */
enum SQLDATETIME_CODE {
  SQLDTCODE_DATE      = 1,
  SQLDTCODE_TIME      = 2,
  SQLDTCODE_TIMESTAMP = 3,
  SQLDTCODE_MPDATETIME = 4
};
/* #endif */

/* specifies the type of interval data type */
enum SQLINTERVAL_CODE {
  SQLINTCODE_YEAR          =  1,
  SQLINTCODE_MONTH         =  2,
  SQLINTCODE_DAY           =  3,
  SQLINTCODE_HOUR          =  4,
  SQLINTCODE_MINUTE        =  5,
  SQLINTCODE_SECOND        =  6,
  SQLINTCODE_YEAR_MONTH    =  7,
  SQLINTCODE_DAY_HOUR      =  8,
  SQLINTCODE_DAY_MINUTE    =  9,
  SQLINTCODE_DAY_SECOND    = 10,
  SQLINTCODE_HOUR_MINUTE   = 11,
  SQLINTCODE_HOUR_SECOND   = 12,
  SQLINTCODE_MINUTE_SECOND = 13
};

/* type codes from SQL/MP include file sql.h, for TYPE_FS
   descriptor fields (with additional SQL/MX datatypes)             */

#ifndef _SQLDT_ASCII_F

#define _SQLDT_ASCII_F      0   /* CHAR datatype                    */
#define _SQLDT_ASCII_F_UP   1   /* CHAR datatype, UPSHIFTed         */
#define _SQLDT_DOUBLE_F     2   /* DOUBLE CHAR datatype             */
#define _SQLDT_ASCII_V     64   /* VARCHAR datatype                 */
#define _SQLDT_ASCII_V_UP  65   /* VARCHAR datatype, UPSHIFted      */
#define _SQLDT_DOUBLE_V    66   /* DOUBLE VARCHAR datatype          */
#define _SQLDT_16BIT_S    130   /* 16 bit signed binary number      */
                                /* SMALLINT, NUMERIC(1-4, <scale>)  */
#define _SQLDT_16BIT_U    131   /* 16 bit unsigned binary number    */
                                /* unsigned NUMERIC(1-4, <scale>)   */
#define _SQLDT_32BIT_S    132   /* 32 bit signed binary number      */
                                /* INTEGER, NUMERIC(5-9, <scale>)   */
#define _SQLDT_32BIT_U    133   /* 32 bit unsigned binary number    */
                                /* unsigned NUMERIC(5-9, <scale>)   */
#define _SQLDT_64BIT_S    134   /* 64 bit signed binary number      */
                                /* LARGEINT, NUMERIC(10-18,<scale>) */
#define _SQLDT_TDM_REAL   140   /* 32 bit TANDEM FLOAT              */
#define _SQLDT_TDM_DOUBLE 141   /* 64 bit TANDEM FLOAT              */
#define _SQLDT_IEEE_REAL  142   /* 32 bit IEEE FLOAT (SQL/MX only)  */
#define _SQLDT_IEEE_DOUBLE 143  /* 64 bit IEEE FLOAT (SQL/MX only)  */
#define _SQLDT_DEC_U      150   /* DECIMAL datatype: unsigned       */
#define _SQLDT_DEC_LSS    151   /* DECIMAL datatype:                */
                                /* leading sign is separate         */
#define _SQLDT_DEC_LSE    152   /* DECIMAL datatype:                */
                                /* leading sign is embedded         */
#define _SQLDT_DEC_TSS    153   /* DECIMAL datatype:                */
                                /* trailing sign separate           */
#define _SQLDT_DEC_TSE    154   /* DECIMAL datatype:                */
                                /* trailing sign embedded           */
#define _SQLDT_NUM_BIG_U  155   /* BigNum unsigned NUMERIC datatype */
                                /* NUMERIC(N) where N > 9           */
#define _SQLDT_NUM_BIG_S  156   /* BigNum signed NUMERIC datatype   */
                                /* NUMERIC(N) where N > 18          */

#define _SQLDT_BLOB       160   /* BLOB datatype                    */
#define _SQLDT_CLOB       161   /* CLOB datatype                    */

#define _SQLDT_DATETIME   192   /* DATETIME datatype                */

/*
 * INTERVAL datatype:
 */
#define _SQLDT_INT_Y_Y    195     /* YEAR TO YEAR         */
#define _SQLDT_INT_MO_MO  196     /* MONTH TO MONTH       */
#define _SQLDT_INT_Y_MO   197     /* YEAR TO MONTH        */
#define _SQLDT_INT_D_D    198     /* DAY TO DAY           */
#define _SQLDT_INT_H_H    199     /* HOUR TO HOUR         */
#define _SQLDT_INT_D_H    200     /* DAY TO HOUR          */
#define _SQLDT_INT_MI_MI  201     /* MINUTE TO MINUTE     */
#define _SQLDT_INT_H_MI   202     /* HOUR TO MINUTE       */
#define _SQLDT_INT_D_MI   203     /* DAY TO MINUTE        */
#define _SQLDT_INT_S_S    204     /* SECOND TO SECOND     */
#define _SQLDT_INT_MI_S   205     /* MINUTE TO SECOND     */
#define _SQLDT_INT_H_S    206     /* HOUR TO SECOND       */
#define _SQLDT_INT_D_S    207     /* DAY TO SECOND        */
#define _SQLDT_INT_F_F    208     /* FRACTION TO FRACTION */
#define _SQLDT_INT_S_F    209     /* SECOND TO FRACTION   */
#define _SQLDT_INT_MI_F   210     /* MINUTE TO FRACTION   */
#define _SQLDT_INT_H_F    211     /* HOUR TO FRACTION     */
#define _SQLDT_INT_D_F    212     /* DAY TO FRACTION      */

#endif /* ifndef _SQLDT_ASCII_F */


/* constant char strings that can be used to indicate charset sets for
   object and module names (from common/charinfo.cpp)
*/
#define MAX_CHAR_SET_STRING_LENGTH 128


/* specifies a particular statement information item in the diagnostics area */
enum SQLDIAG_STMT_INFO_ITEM_ID {

  /* ANSI */
  SQLDIAG_NUMBER        =    1, /* (numeric) number of conditions stored    */
  SQLDIAG_MORE          =    2, /* (string ) Y = all conditions not stored  */
  SQLDIAG_COMMAND_FUNC  =    3, /* (string ) type of statement executed     */
  SQLDIAG_DYNAMIC_FUNC  =    4, /* (string ) type of prepared stmt executed */
  SQLDIAG_ROW_COUNT     =    5, /* (numeric) number of rows affected        */

  /* SQL/MX */
  SQLDIAG_AVERAGE_STREAM_WAIT  =  101, /* (numeric) avg wait time for stream */
  SQLDIAG_ROWSET_ROW_COUNT     =  102, /* (numeric) array containing number 
				       of rows affected by each rowset row  */

  /* SQL/MP */
  SQLDIAG_COST          =  201, /* (numeric) estimated query cost           */
  SQLDIAG_FIRST_FSCODE  =  202, /* (numeric) first file system error        */
  SQLDIAG_LAST_FSCODE   =  203, /* (numeric) last file system error         */
  SQLDIAG_LAST_SYSKEY   =  204  /* (numeric) SYSKEY of last record inserted */
};

/* specifies a particular condition information item in the diagnostics area */
enum SQLDIAG_COND_INFO_ITEM_ID {

  /* ANSI */
  SQLDIAG_COND_NUMBER   =    1, /* (numeric) condition number               */
  SQLDIAG_RET_SQLSTATE  =    2, /* (string ) returned SQLSTATE              */
  SQLDIAG_CLASS_ORIG    =    3, /* (string ) class origin, e.g. ISO 9075    */
  SQLDIAG_SUBCLASS_ORIG =    4, /* (string ) subclass origin, e.g. ISO 9075 */
  SQLDIAG_SERVER_NAME   =    5, /* (string ) SQL server name                */
  SQLDIAG_CONNECT_NAME  =    6, /* (string ) connection name                */
  SQLDIAG_CONSTR_CAT    =    7, /* (string ) constraint catalog name        */
  SQLDIAG_CONSTR_SCHEMA =    8, /* (string ) constraint schema name         */
  SQLDIAG_CONSTR_NAME   =    9, /* (string ) constraint name                */
  SQLDIAG_CATALOG_NAME  =   10, /* (string ) catalog name                   */
  SQLDIAG_SCHEMA_NAME   =   11, /* (string ) schema name                    */
  SQLDIAG_TABLE_NAME    =   12, /* (string ) table name                     */
  SQLDIAG_COLUMN_NAME   =   13, /* (string ) column name                    */
  SQLDIAG_CURSOR_NAME   =   14, /* (string ) cursor name                    */
  SQLDIAG_MSG_TEXT      =   15, /* (string ) message text                   */
  SQLDIAG_MSG_LEN       =   16, /* (numeric) message length in characters   */
  SQLDIAG_MSG_OCTET_LEN =   17, /* (numeric) message length in bytes        */
  SQLDIAG_TRIGGER_CAT   =   18, /* (string ) trigger catalog name           */
  SQLDIAG_TRIGGER_SCHEMA =  19, /* (string ) trigger schema name            */
  SQLDIAG_TRIGGER_NAME   =  20, /* (string ) trigger name                   */ 

  /* ODBC */
  SQLDIAG_COLUMN_NUMBER =  101, /* (numeric) column number                  */
  SQLDIAG_NATIVE        =  102, /* (numeric) native error code              */
  SQLDIAG_ROW_NUMBER    =  103, /* (numeric) row number                     */

  /* SQL/MP */
  SQLDIAG_SOURCE_FILE   =  201, /* (string ) source file name               */
  SQLDIAG_LINE_NUMBER   =  202, /* (numeric) source code line number        */
  SQLDIAG_SUBSYSTEM_ID  =  203, /* (string ) component that issued error    */
  SQLDIAG_SQLCODE       =  204, /* (numeric) SQLCODE of this condition      */
  SQLDIAG_NSK_CODE      =  205 /* (numeric) NSK code FExxx from NSK/FS/DP2 */
};

/* struct to specify one condition information item of a diagnostics entry */
typedef struct {
  Int32 item_id; /* item id (SQLDIAG_COND_INFO_ITEM_ID) */
  Int32 cond_number_desc_entry;  /* cond. num's input descriptor entry num   */
} SQLDIAG_COND_INFO_ITEM;

/* struct to hold one item value of a diagnostic condition */
typedef struct {
  /* which condition and which item in that condition */ 
  SQLDIAG_COND_INFO_ITEM item_id_and_cond_number;   
  /* numeric value or length of string        */
  Int32 * num_val_or_len;  
  /* string value (if not a numeric value)    */          
  char * string_val;   
} SQLDIAG_COND_INFO_ITEM_VALUE;

/* struct to return query cost information to caller after prepare of a stmt */
typedef struct {
  double cpuTime;
  double ioTime;
  double msgTime;
  double idleTime;
  double numSeqIOs;
  double numRandIOs;
  double totalTime;
  double cardinality;
  double estimatedTotalMem;
  short  resourceUsage;
  short maxCpuUsage;
} SQL_QUERY_COST_INFO;

#define COMPILER_ID_LEN   28
#define COMPILE_INFO_LEN  4096
typedef struct {        
  _int64 compileStartTime;
  _int64 compileEndTime;  
  char compilerId[COMPILER_ID_LEN];
  _int64 cmpCpuTotal;
  _int64 cmpCpuBinder;
  _int64 cmpCpuNormalizer;
  _int64 cmpCpuAnalyzer;
  _int64 cmpCpuOptimizer;
  _int64 cmpCpuGenerator;
  UInt32 metadataCacheHits;
  UInt32 metadataCacheLookups;
  Int32 queryCacheState;
  UInt32 histogramCacheHits;
  UInt32 histogramCacheLookups;
  _int64 stmtHeapSize;
  _int64 cxtHeapSize;
  Int32  optTasks;
  Int32  optContexts;
  short isRecompile;  
  char compileInfo[COMPILE_INFO_LEN];  
  Int32 compileInfoLen;
} SQL_COMPILATION_STATS_DATA;

/* struct to return details about a query after prepare. 
   Will be used by caller(mxcs/wms) to determine how/when/if to run the 
   query */
typedef struct {
  UInt32 affinityNumber;
  Int32 dop; /* degree of parallel execution */
  short xnNeeded;
  short mandatoryCrossProduct;
  short missingStats;
  short numOfJoins;
  short fullScanOnTable;
  short highDp2MxBufferUsage;
  double rowsAccessedForFullScan;
  double dp2RowsAccessed;
  double dp2RowsUsed;
  SQL_COMPILATION_STATS_DATA compilationStats;
  unsigned short statsCollectionType;    /* see SQLSTATS_TYPE */
  unsigned short numOfUdrs;
  unsigned short numOfBmos;
  unsigned short overflowMode;
  double overflowSize;
  short queryType;
  short subqueryType;
  char filler[28];
} SQL_QUERY_COMPILER_STATS_INFO;

/* struct to hold statistics to be returned. */
typedef struct {
  _int64 prepareTime;
  _int64 fixupTime;
  _int64 freeupTime;
  _int64 returnedRowsIOTime;
  _int64 elapsedTime;
  _int64 rowsAffected;
  short compilerCacheHit;
  short executorCacheHit;
} SQL_QUERY_STATISTICS;

/* specifies an SQL transaction command */
enum SQLTRANS_COMMAND {
  /* The only commands currently supported are transaction       */
  /* status and quiesce (prepare for a REPLY call).              */
  /* Use static SQL or a dynamic prepare or execute immediate to */
  /* perform all other SQL transaction statements.               */
  SQLTRANS_BEGIN            =    1, 
  SQLTRANS_COMMIT           =    2, 
  SQLTRANS_ROLLBACK         =    3,
  /* SQLTRANS_ROLLBACK_WAITED  =    4, */
  SQLTRANS_STATUS           =    5,
  /* SQLTRANS_SET              =    6, */
  SQLTRANS_QUIESCE          =    7,
  /* currently, called only by mxci after a BREAK key is hit
     to abort any implicit transactions started by cli */
  SQLTRANS_ROLLBACK_IMPLICIT_XN = 8,

  SQLTRANS_BEGIN_WITH_DP2_XNS   = 9,

  /* inherit the global transaction and make it the current xn */
  SQLTRANS_INHERIT          = 10
};

/* specifies the type/format of an AUTHID */
enum SQLAUTHID_TYPE {
  SQLAUTHID_TYPE_ASCII_USERNAME = 7777,
  SQLAUTHID_TYPE_ASCII_USERROLE = 7799,
  SQLAUTHID_TYPE_ASCII_SID      = 8888,
  SQLAUTHID_TYPE_INVALID        = 9999
};

/* struct to specify an array of pointer pairs without using a va list.*/
struct SQLCLI_PTR_PAIRS {
  void * var_ptr; /* pointer to the data variable */
  void * ind_ptr; /* pointer to indicator variable; -1 is NULL */
};

/* struct to specify an array of quad fields without using a va list. */
struct SQLCLI_QUAD_FIELDS {
  Int32  var_layout; /* data variable layout size */
  void * var_ptr;    /* pointer to the data variable */
  Int32  ind_layout; /* indicator variable layout size */
  void * ind_ptr;    /* pointer to indicator variable; -1 is NULL */
};

/* For the GetStmtAttr and SetStmtAttr interfaces.  */
enum SQLATTRCURSOR_TYPE {
  SQL_READONLY_CURSOR = 0,
  SQL_UPDATABLE_CURSOR = 1
};

enum SQLATTR_TYPE {
  SQL_ATTR_CURSOR_HOLDABLE = -3,
  SQL_ATTR_INPUT_ARRAY_MAXSIZE = -2,
  SQL_ATTR_QUERY_TYPE = -4,
  SQL_ATTR_ROWSET_ATOMICITY = -5,
  SQL_ATTR_NOT_ATOMIC_FAILURE_LIMIT = -6,
  SQL_ATTR_XN_NEEDED = -7,
  SQL_ATTR_UNIQUE_STMT_ID = -8,
  SQL_ATTR_UNIQUE_QUERY_ID = -8,
  SQL_ATTR_MAX_RESULT_SETS = -9,
  SQL_ATTR_UNIQUE_STMT_ID_NO_DIAGS = -10,
  SQL_ATTR_RS_PROXY_SYNTAX = -11,
  SQL_ATTR_CONSUMER_QUERY_TEXT = -12,
  SQL_ATTR_CONSUMER_CPU = -13,
  SQL_ATTR_COPY_STMT_ID_TO_DIAGS = -14,
  SQL_ATTR_PARENT_QID = -15,
  SQL_ATTR_CURSOR_UPDATABLE = -16,
  SQL_ATTR_SUBQUERY_TYPE = -17
};

/* A container for a single statement attribute. For use with
   the SQL_EXEC_GetStmtAttrs function that returns multiple
   attributes in one call. */
typedef struct {
  Int32 attr_type;      /* IN:    which attr, from the         */
                        /*        SQLATTR_TYPE enum            */
  Int32 index;          /* IN:    optional index if attr       */
                        /*        is a collection              */
  Int32 *numeric_value; /* INOUT: if attr is numeric, address  */
                        /*        of target buffer for the     */
                        /*        attr value                   */
  char *string_value;   /* INOUT: if attr is string, address   */
                        /*        of target buffer for the     */
                        /*        attr value                   */
  Int32 max_string_len; /* IN:    if attr is string, max len   */
                        /*        of buffer pointed to by      */
                        /*        string_val                   */
  Int32 *len_of_item;   /* INOUT OPTIONAL: if attr is string,  */
                        /*        address of target buffer to  */
                        /*        hold actual len of item      */
                        /*        returned. If error returned  */
                        /*        because string_value buffer  */
                        /*        too small then len_of_item   */
                        /*        holds the required size      */
} SQLSTMT_ATTR;

enum SQLATTRHOLDABLE_TYPE {
  SQL_NONHOLDABLE = 0,
  SQL_HOLDABLE    = 1
};

enum SESSIONATTR_TYPE {
  SESSION_ATTR_ID = 1,
  SESSION_PARENT_QID = 2,
  SESSION_DATABASE_USER_NAME = 3,
  SESSION_DATABASE_USER_ID = 4,
  SESSION_SESSION_USER_ID = 5
};

/* this list and their values must be the same as the
   enum QueryType in comexe/ComTdbRoot.h */
enum SQLATTRQUERY_TYPE {
  SQL_OTHER = -1,
  SQL_UNKNOWN = 0,
  SQL_SELECT_UNIQUE = 1,
  SQL_SELECT_NON_UNIQUE = 2,
  SQL_INSERT_UNIQUE = 3,
  SQL_INSERT_NON_UNIQUE = 4,
  SQL_UPDATE_UNIQUE = 5,
  SQL_UPDATE_NON_UNIQUE = 6,
  SQL_DELETE_UNIQUE = 7,
  SQL_DELETE_NON_UNIQUE = 8,
  SQL_CONTROL = 9,
  SQL_SET_TRANSACTION = 10,
  SQL_SET_CATALOG = 11,
  SQL_SET_SCHEMA = 12,
  SQL_CALL_NO_RESULT_SETS = 13,
  SQL_CALL_WITH_RESULT_SETS = 14,
  SQL_SP_RESULT_SET = 15,
  SQL_INSERT_RWRS = 16,

  /* same value as RWRS insert. identifier rowset_sidetree is obsolete and
     will be removed in future when no callers use this identifier.*/
  SQL_INSERT_ROWSET_SIDETREE = 16,

  /* utilities, like DUP, POPULATE, etc...implemented in catman. See
     sqlcomp/parser.cpp for complete list */
  SQL_CAT_UTIL = 17,

  /* complex util statements implemented in executor by converting them
     to multiple sql queries. See optimizer/RelMisc.h, class ExeUtilExpr */
  SQL_EXE_UTIL = 18,
  /* Used to denote unload statements, a fast and parallel 
     approach to extract data from SQL tables into extrenal files */
  SQL_SELECT_UNLOAD = 19
  

};

enum SQLATTR_SUBQUERY_TYPE
{
  SQL_STMT_NA = 0, 
  SQL_STMT_CTAS = 1,
  SQL_STMT_REPLICATE = 2,
  SQL_STMT_GET_STATISTICS = 3,
  /* describe type of statements like showcontrol, showplan */
  SQL_DESCRIBE_QUERY = 4
};


enum SQLATTRATOMIC_TYPE {
  SQL_NOT_SPECIFIED = 0,
  SQL_ATOMIC = 1,
  SQL_NOT_ATOMIC = 2
};

enum SQLSTMT_STATE_TYPE {
  SQLSTMT_STATE_INITIAL = 0,
  SQLSTMT_STATE_OPEN = 1,
  SQLSTMT_STATE_EOF = 2,
  SQLSTMT_STATE_CLOSE = 3,
  SQLSTMT_STATE_DEALLOCATED = 4,
  SQLSTMT_STATE_FETCH = 5,
  SQLSTMT_STATE_CLOSE_TABLES = 6,
  SQLSTMT_STATE_PREPARE = 7,
  SQLSTMT_STATE_PROCESS_ENDED = 8,
  SQLSTMT_RELEASE_TRANS = 9,
  SQLSTMT_SUSPENDED = 10,
  SQLSTMT_STATE_UNKNOWN
};

enum SQLSTATS_TYPE {
  SQLCLI_SAME_STATS    = 999,
  SQLCLI_NO_STATS      = 0,
  /* SQLCLI_DEFAULT_STATS means the statistics is merged based on the statistics view type */
  SQLCLI_DEFAULT_STATS = 0, 
  SQLCLI_MEASURE_STATS = 1,     
  SQLCLI_ACCUMULATED_STATS = 2, 
  SQLCLI_PERTABLE_STATS   = 3,  
  SQLCLI_ALL_STATS     = 4,
  SQLCLI_OPERATOR_STATS = 5,
  SQLCLI_CPU_OFFENDER_STATS = 6,
  SQLCLI_QID_DETAIL_STATS = 7,
  SQLCLI_SE_OFFENDER_STATS = 8,
  SQLCLI_DISK_OFFENDER_STATS = SQLCLI_SE_OFFENDER_STATS,
  SQLCLI_RMS_INFO_STATS = 9,
  SQLCLI_PROGRESS_STATS = 10,
  SQLCLI_ET_OFFENDER_STATS = 11,
  SQLCLI_RMS_CHECK_STATS = 12,
  SQLCLI_MEM_OFFENDER_STATS = 13,
  SQLCLI_PROCESS_STATS = 14
};

/* For the GetUniqueQueryIdAttrs interfaces.  */

enum UNIQUEQUERYID_ATTR_TYPE {
  /* segment number                                       */
  UNIQUEQUERYID_SEGMENTNUM   = 0,  

  /* segment name: max 10 bytes                           */
  UNIQUEQUERYID_SEGMENTNAME  = 1,  

  /* cpu number                                           */
  UNIQUEQUERYID_CPU          = 2,  

  /* pin of master exe process                            */
  UNIQUEQUERYID_PIN          = 3,  

  /* starttime of master exe process                      */
  UNIQUEQUERYID_EXESTARTTIME = 4,  

  /* unique session number                                */
  UNIQUEQUERYID_SESSIONNUM   = 5,
  
  /* null terminated user name: max 32 bytes              */
  UNIQUEQUERYID_USERNAME     = 6,  

  /* null terminated session name: max 24 bytes           */
  UNIQUEQUERYID_SESSIONNAME  = 7,  

  /* unique query num within a process                    */
  UNIQUEQUERYID_QUERYNUM     = 8,  

  /* null terminated user statement name: max 110 bytes   */
  UNIQUEQUERYID_STMTNAME     = 9,   

  /* null terminated session id:          max 104 bytes   */
  UNIQUEQUERYID_SESSIONID    = 10
};

typedef struct {
  Int32 attr_type;           /* IN: which attr (UNIQUEQUERYID_ATTR_TYPE)      */
  _int64 num_val_or_len;     /* IN: if string value, max length of string 
				    to return in string_val
                              Note: string_val buffer size should be one more than
                                     num_val_or_len to allow for a null terminator
                                OUT: if numeric value, the value. 
                                     if string value, the actual length of string_val returned */
  char * string_val;         /* OUT: if string value, null terminated string */
} UNIQUEQUERYID_ATTR;
  
#define MAX_TDB_NAME_LEN		35

enum STATS_REQ_TYPE {
  SQLCLI_STATS_REQ_NONE = -1,
  SQLCLI_STATS_REQ_STMT = 0,
  SQLCLI_STATS_REQ_CPU = 1,
  SQLCLI_STATS_REQ_PID = 2,
  SQLCLI_STATS_REQ_QID = 3,
  SQLCLI_STATS_REQ_QID_CURRENT = 4,
  SQLCLI_STATS_REQ_CPU_OFFENDER = 5,
  SQLCLI_STATS_REQ_QID_DETAIL = 6,
  SQLCLI_STATS_REQ_SE_OFFENDER = 7,
  SQLCLI_STATS_REQ_DISK_OFFENDER = SQLCLI_STATS_REQ_SE_OFFENDER,
  SQLCLI_STATS_REQ_RMS_INFO = 8,
  SQLCLI_STATS_REQ_ET_OFFENDER = 9,
  SQLCLI_STATS_REQ_MEM_OFFENDER = 10,
  SQLCLI_STATS_REQ_PROCESS_INFO = 11
};

enum STATS_SUB_REQ_TYPE {
  SQLCLI_STATS_REQ_QUERIES_IN_SQL = 1,
  SQLCLI_STATS_REQ_QUERIES_IN_CLIENT = 2,
  SQLCLI_STATS_REQ_INACTIVE_QUERIES = 3,
  SQLCLI_STATS_REQ_DEAD_QUERIES = 4,
  SQLCLI_STATS_REQ_UNMONITORED_QUERIES = 5, 
  SQLCLI_STATS_REQ_SE_ROOT = 6,
  SQLCLI_STATS_REQ_SE_OPERATOR = 7,
  SQLCLI_STATS_REQ_RMS_CHECK = 11,
  SQLCLI_STATS_REQ_MEM_HIGH_WM = 12,
  SQLCLI_STATS_REQ_MEM_ALLOC = 13,
  SQLCLI_STATS_REQ_PFS_USE = 14
};

enum SCRATCH_OVERFLOW_MODE {
  SQLCLI_OFM_DISK_TYPE = 0,
  SQLCLI_OFM_SSD_TYPE = 1,
  SQLCLI_OFM_MMAP_TYPE = 2

};

typedef struct {
  short tdb_id;
  short stats_type;
  char  tdb_name[MAX_TDB_NAME_LEN+1];
} SQLSTATS_DESC;

/* SQLSTATS_DESC stats type returned for various SQLSTATS_TYPE
  SQLSTATS_TYPE             Returned SQLSTATS_DESC_STATS_TYPEs

  SQLCLI_ACCUMULATED_STATS  SQLSTATS_DESC_MASTER_STATS
                            SQLSTATS_DESC_MEAS_STATS

  SQLCLI_PERTABLE_STATS     SQLSTATS_DESC_MASTER_STATS
                            SQLSTATS_DESC_ROOT_OPER_STATS
                            SQLSTATS_DESC_PERTABLE_STATS as many as the no. of tables in the query
                            
  SQLCLI_OPERATOR_STATS     SQLSTATS_DESC_MASTER_STATS
                            SQLSTATS_DESC_ROOT_OPER_STATS for every ESP root or master root
                            SQLSTATS_DESC_PERTABLE_STATS for all DP2 operators
                            SQLSTATS_DESC_PERTABLE_STATS for all PA operators
                            SQLSTATS_DESC_BMO_STATS for sort, hash join and hash group by operators
                            SQLSTATS_DESC_UDR_BASE_STATS for UDR
                            SQLSTATS_DESC_OPER_STATS for the rest
                            
*/
enum SQLSTATS_DESC_STATS_TYPE {
  SQLSTATS_DESC_OPER_STATS = 0,
  SQLSTATS_DESC_ROOT_OPER_STATS = 1,
  SQLSTATS_DESC_DP2_LEAF_STATS = 2,
  SQLSTATS_DESC_DP2_INSERT_STATS = 3,
  SQLSTATS_DESC_PARTITION_ACCESS_STATS = 4,
  SQLSTATS_DESC_GROUP_BY_STATS = 5,
  SQLSTATS_DESC_HASH_JOIN_STATS = 6,
  SQLSTATS_DESC_PROBE_CACHE_STATS = 7,
  SQLSTATS_DESC_ESP_STATS = 8,
  SQLSTATS_DESC_SPLIT_TOP_STATS = 9,
  SQLSTATS_DESC_MEAS_STATS = 10,
  SQLSTATS_DESC_PERTABLE_STATS = 11,
  SQLSTATS_DESC_SORT_STATS = 12,
  SQLSTATS_DESC_UDR_STATS = 13,
  SQLSTATS_DESC_NO_OP = 14,  
  SQLSTATS_DESC_MASTER_STATS = 15 ,
  SQLSTATS_DESC_RMS_STATS = 16,
  SQLSTATS_DESC_BMO_STATS = 17,
  SQLSTATS_DESC_UDR_BASE_STATS = 18,
  SQLSTATS_DESC_REPLICATE_STATS = 19,
  SQLSTATS_DESC_REPLICATOR_STATS = 20,
  SQLSTATS_DESC_FAST_EXTRACT_STATS = 21,
  SQLSTATS_DESC_REORG_STATS = 22,
  SQLSTATS_DESC_HDFSSCAN_STATS = 23,
  SQLSTATS_DESC_HBASE_ACCESS_STATS = 24,
  SQLSTATS_DESC_PROCESS_STATS = 25
};


enum SQLSTATS_ITEM_ID {
/* SQLSTATS_ITEM_ID for SQLSTATS_DESC_MASTER_STATS */
  SQLSTATS_QUERY_ID = 0,
  SQLSTATS_COMP_START_TIME = 1,
  SQLSTATS_COMP_END_TIME = 2,
  SQLSTATS_COMP_TIME = 3,
  SQLSTATS_EXECUTE_START_TIME  = 4,
  SQLSTATS_FIRST_ROW_RET_TIME = 5,
  SQLSTATS_EXECUTE_END_TIME = 6,
  SQLSTATS_EXECUTE_TIME = 7,
  SQLSTATS_FIXUP_TIME = 8,
  SQLSTATS_STMT_STATE = 9,
  SQLSTATS_ROWS_AFFECTED = 10,
  SQLSTATS_SQL_ERROR_CODE = 11,
  SQLSTATS_STATS_ERROR_CODE = 12,
  SQLSTATS_QUERY_TYPE = 13,
  SQLSTATS_PARENT_QUERY_ID = 14,
  SQLSTATS_NUM_SQLPROCS = 15,
  SQLSTATS_NUM_CPUS = 16,
  SQLSTATS_SOURCE_STR = 17,
  SQLSTATS_MASTER_PRIORITY = 18,
  SQLSTATS_TRANSID = 19,
  SQLSTATS_CHILD_QUERY_ID = 200,
  SQLSTATS_RECLAIM_SPACE_COUNT = 201,
  SQLSTATS_SUBQUERY_TYPE = 202,
  SQLSTATS_PARENT_QUERY_SYSTEM = 203,
/* The following 3 enums are moved from operator level stats
  to here, however, the enum values are not changed to provide
  backward compatibility */
  SQLSTATS_AQR_LAST_ERROR= 86,
  SQLSTATS_AQR_NUM_RETRIES=87,
  SQLSTATS_AQR_DELAY_BEFORE_RETRY=88,
/* SQLSTATS_ITEM_ID for SQLSTATS_DESC_MASTER_STATS and SQLSTATS_DESC_PERTABLE_STATS */
  SQLSTATS_EST_ROWS_ACCESSED = 20,
  SQLSTATS_EST_ROWS_USED = 21,
  SQLSTATS_SOURCE_STR_LEN = 22,
  SQLSTATS_ROWS_RETURNED = 23,
  SQLSTATS_ROWS_RETURNED_TIME = 24,
/* SQLSTATS_ITEM_ID for SQLSTATS_DESC_MEAS_STATS and SQLSTATS_DESC_PERTABLE_STATS */
  SQLSTATS_ACT_ROWS_ACCESSED = 30,
  SQLSTATS_ACT_ROWS_USED = 31,
  SQLSTATS_MSG_COUNT = 32,
  SQLSTATS_MSG_BYTES = 33,
  SQLSTATS_STATS_BYTES = 34,
  SQLSTATS_DISK_IOS = 35,
  SQLSTATS_LOCK_WAITS = 36,
  SQLSTATS_LOCK_ESCALATIONS = 37,
  SQLSTATS_DP2_CPU_BUSY_TIME = 38,
  SQLSTATS_DP2_REDRIVE_ATTEMPTS = 39,

  SQLSTATS_SQL_CPU_BUSY_TIME = 50,
  SQLSTATS_SQL_SPACE_ALLOC = 51,
  SQLSTATS_SQL_SPACE_USED = 52,
  SQLSTATS_SQL_HEAP_ALLOC = 53,
  SQLSTATS_SQL_HEAP_USED = 54,
  SQLSTATS_EID_SPACE_ALLOC = 55,
  SQLSTATS_EID_SPACE_USED = 56,
  SQLSTATS_EID_HEAP_ALLOC = 57,
  SQLSTATS_EID_HEAP_USED = 58,
  SQLSTATS_OPENS = 59,
  SQLSTATS_OPEN_TIME = 60,
  SQLSTATS_PROCESS_CREATED = 61,
  SQLSTATS_PROCESS_CREATE_TIME = 62,
  SQLSTATS_REQ_MSG_CNT = 63,
  SQLSTATS_REQ_MSG_BYTES = 64,
  SQLSTATS_REPLY_MSG_CNT = 65,
  SQLSTATS_REPLY_MSG_BYTES = 66,
  SQLSTATS_PHYS_MEM_IN_USE = 67,
  SQLSTATS_SQL_MAX_WAIT_TIME = 68,
  SQLSTATS_SQL_AVG_WAIT_TIME = 69,

/* SQLSTATS_ITEM_ID for SQLSTATS_DESC_PERTABLE_STATS */
  SQLSTATS_TABLE_ANSI_NAME = 70,
/* SQLSTATS_ITEM_ID for Operator level Stats */
  SQLSTATS_EXPLAIN_NODE_ID = 80,
  SQLSTATS_NUM_CALLS = 81,
  SQLSTATS_TDB_ID = 82,
  SQLSTATS_TDB_NAME = 83,
  SQLSTATS_LEFT_CHILD = 84,
  SQLSTATS_RIGHT_CHILD = 85,
  /* enum 86, 87 and 88 are moved to master stats */
  SQLSTATS_PARENT_TDB_ID = 89,
  SQLSTATS_FRAG_NUM = 90,
  SQLSTATS_OPER_CPU_TIME =91,
  SQLSTATS_INST_NUM = 92,
  SQLSTATS_INST_ID = 93,
  SQLSTATS_DETAIL = 94,
  SQLSTATS_DOP = 95,
/* SQLSTATS_ITEM_ID for RMS_STATS */
  SQLSTATS_RMS_VER = 100,
  SQLSTATS_NODE_NAME = 101,
  SQLSTATS_CPU = 102,
  SQLSTATS_SSCP_PID = 103,
  SQLSTATS_SSCP_PRIORITY = 104,
  SQLSTATS_SSCP_TIMESTAMP = 105,
  SQLSTATS_SSMP_PID = 106,
  SQLSTATS_SSMP_PRIORITY = 107,
  SQLSTATS_SSMP_TIMESTAMP = 108,
  SQLSTATS_STORE_SRC_LEN = 109,
  SQLSTATS_RMS_ENV_TYPE = 110,
  SQLSTATS_STATS_HEAP_ALLOC = 111,
  SQLSTATS_STATS_HEAP_USED = 112,
  SQLSTATS_STATS_HEAP_HIGH_WM = 113,
  SQLSTATS_PROCESSES_REGD = 114,
  SQLSTATS_QUERIES_REGD = 115,
  SQLSTATS_RMS_SEMAPHORE_PID = 116,
  SQLSTATS_SSCPS_OPENED = 117,
  SQLSTATS_SSCPS_DELETED_OPENS = 118,
  SQLSTATS_LAST_GC_TIME = 119,
  SQLSTATS_QUERIES_GCED_IN_LAST_RUN = 120,
  SQLSTATS_TOTAL_QUERIES_GCED = 121,
  SQLSTATS_SSMP_REQ_MSG_CNT = 122,
  SQLSTATS_SSMP_REQ_MSG_BYTES = 123,
  SQLSTATS_SSMP_REPLY_MSG_CNT = 124,
  SQLSTATS_SSMP_REPLY_MSG_BYTES = 125,
  SQLSTATS_SSCP_REQ_MSG_CNT = 126,
  SQLSTATS_SSCP_REQ_MSG_BYTES = 127,
  SQLSTATS_SSCP_REPLY_MSG_CNT = 128,
  SQLSTATS_SSCP_REPLY_MSG_BYTES = 129,
  SQLSTATS_RMS_STATS_RESET_TIMESTAMP = 130,
  SQLSTATS_RMS_STATS_NUM_SQL_SIK = 131,
/* SQLSTATS_ITEM_ID for BMO_STATS */
  SQLSTATS_BMO_HEAP_USED = 150,
  SQLSTATS_BMO_HEAP_ALLOC = 151,
  SQLSTATS_BMO_HEAP_WM = 152,
  SQLSTATS_BMO_SPACE_BUFFER_SIZE = 153,
  SQLSTATS_BMO_SPACE_BUFFER_COUNT = 154,
  SQLSTATS_OVEFLOW_PHASE_STARTTIME = 155,
  SQLSTATS_OVERFLOW_PHASE = 156,
  SQLSTATS_SCRATCH_FILE_COUNT = 157,
  SQLSTATS_SCRATCH_BUFFER_BLOCK_SIZE = 158,
  SQLSTATS_SCRATCH_BUFFER_BLOCKS_READ = 159,
  SQLSTATS_SCRATCH_BUFFER_BLOCKS_WRITTEN = 160,
  SQLSTATS_SCRATCH_OVERFLOW_MODE = 161,
  SQLSTATS_SCRATCH_READ_COUNT = 162,
  SQLSTATS_SCRATCH_WRITE_COUNT = 163,
/* SQLSTATS_ITEM_ID for UDR_BASE_STATS */
  SQLSTATS_UDR_CPU_BUSY_TIME = 170,
  SQLSTATS_RECENT_REQ_TS = 171,
  SQLSTATS_RECENT_REPLY_TS = 172,
  SQLSTATS_UDR_SERVER_ID = 173,
  SQLSTATS_CANCEL_TIME_ID = 174,
  SQLSTATS_QUERY_SUSPENDED = 175,
  SQLSTATS_SUSPEND_TIME_ID = 176,
/* SQLSTATS_ITEM_ID for REPLICATE_STATS */
  SQLSTATS_REPL_ANSI_NAME = 180,
  SQLSTATS_REPL_SOURCE_SYSTEM = 181,
  SQLSTATS_REPL_TARGET_SYSTEM = 182,
  SQLSTATS_REPL_OBJECT_TYPE = 183,
  SQLSTATS_REPL_TYPE = 184,
  SQLSTATS_REPL_NUM_PARTNS = 185,
  SQLSTATS_REPL_PHASE0_START_TIME = 186,
  SQLSTATS_REPL_PHASE0_END_TIME = 187,
  SQLSTATS_REPL_PHASE0_ELAPSED_TIME = 188,
  SQLSTATS_REPL_PHASE1_START_TIME = 189,
  SQLSTATS_REPL_PHASE1_END_TIME = 190,
  SQLSTATS_REPL_PHASE1_ELAPSED_TIME = 191,
  SQLSTATS_REPL_PHASE2_START_TIME = 192,
  SQLSTATS_REPL_PHASE2_END_TIME = 193,
  SQLSTATS_REPL_PHASE2_ELAPSED_TIME = 194,
  SQLSTATS_REPL_PHASE3_START_TIME = 195,
  SQLSTATS_REPL_PHASE3_END_TIME = 196,
  SQLSTATS_REPL_PHASE3_ELAPSED_TIME = 197,
  SQLSTATS_REPL_PHASE4_START_TIME = 198,
  SQLSTATS_REPL_PHASE4_END_TIME = 199,
  SQLSTATS_REPL_PHASE4_ELAPSED_TIME = 220,
  SQLSTATS_REPL_PHASE5_START_TIME = 221,
  SQLSTATS_REPL_PHASE5_END_TIME = 222,
  SQLSTATS_REPL_PHASE5_ELAPSED_TIME = 223,
  SQLSTATS_REPL_PHASE6_START_TIME = 224,
  SQLSTATS_REPL_PHASE6_END_TIME = 225,
  SQLSTATS_REPL_PHASE6_ELAPSED_TIME = 226,
  SQLSTATS_REPL_ROWS_READ = 227,
  SQLSTATS_REPL_TOTAL_BLOCKS = 228,
  SQLSTATS_REPL_BLOCKS_REPLICATED = 229,
  SQLSTATS_REPL_PERCENT_DONE = 230,
  SQLSTATS_REPL_AVG_COMP_RATIO = 231,
  SQLSTATS_REPL_AVG_COMP_TIME = 232,
  SQLSTATS_REPL_AVG_UNCOMP_TIME = 233,
  SQLSTATS_REPL_STATUS = 234,
  SQLSTATS_REPL_SOURCE_FILE_NAME = 235,
  SQLSTATS_REPL_TARGET_FILE_NAME = 236,
  SQLSTATS_REPL_BLOCK_LEN = 237,
  SQLSTATS_REPL_TOTAL_COMPRESS_TIME = 238,
  SQLSTATS_REPL_TOTAL_COMPRESS_BYTES = 239,
  SQLSTATS_REPL_TOTAL_UNCOMPRESS_TIME = 240,
  SQLSTATS_REPL_TOTAL_UNCOMPRESS_BYTES = 241,
  SQLSTATS_REPL_CONCURRENCY = 242,
  SQLSTATS_REPL_COMPLETED_PARTNS = 243,
  SQLSTATS_REPL_BLOCKS_READ = 244
};

typedef struct {
    short  tdb_id;
    short  stats_type;
    short  statsItem_id; /* SQLSTATS_ITEM_ID */
    _int64 int64_value;
    double double_value;
    char   *str_value;
    Int32  str_max_len;
    Int32  str_ret_len;
    Int32  error_code;
} SQLSTATS_ITEM;


/* used in call to SQLCLI_Prepare2 */
enum PREPARE_FLAGS
{
  /* A standalone and not an explicitely PREPAREd query */
  PREPARE_STANDALONE_QUERY   = 0x0001,

  /* prepare being issued as part of an internal AQR */
  PREPARE_AUTO_QUERY_RETRY   = 0x0002,

  /* prepare for old style automatic recomp */
  PREPARE_RECOMP             = 0x0004,

  /* prepare should deallocate and reload cache in mxcmp */
  PREPARE_WITH_DECACHE       = 0x0008,

  /* prepare should not use query text cache */
  PREPARE_NO_TEXT_CACHE      = 0x0010,

  /* set when prepare is redriven for nowaited case */
  PREPARE_NOT_A_NEW_OPERATION = 0x0020,

  /* set when WMS monitoring is needed  */
  PREPARE_MONITOR_THIS_QUERY = 0x0040,

  /* set when embedded compiler needs to be called */
  PREPARE_USE_EMBEDDED_ARKCMP = 0x0080 
};

/* used to put and get security invalidation keys */
typedef struct {
  UInt32 subject;
  UInt32 object;
  char  operation[2];
} SQL_SIKEY;

SQLCLI_LIB_FUNC Int32  SQL_EXEC_AddModule (
		/*IN*/ SQLMODULE_ID * module_name);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_ADDMODULE (
		/*IN*/ SQLMODULE_ID * module_name);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_AllocDesc (
	        /*INOUT*/ SQLDESC_ID * desc_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_ALLOCDESC (
	        /*INOUT*/ SQLDESC_ID * desc_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_AllocDescBasic (
	        /*INOUT*/ SQLDESC_ID * desc_id,
		/*IN OPTIONAL*/ Int32  max_entries);



SQLCLI_LIB_FUNC Int32  SQL_EXEC_AssocFileNumber (
                /*IN*/ SQLSTMT_ID * statement_id,
	        /*IN*/ short        file_number);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_ASSOCFILENUMBER (
                /*IN*/ SQLSTMT_ID * statement_id,
	        /*IN*/ short        file_number);


SQLCLI_LIB_FUNC Int32  SQL_EXEC_AllocStmt (
		/*INOUT*/ SQLSTMT_ID * new_statement_id,
		/*IN OPTIONAL*/ SQLSTMT_ID * cloned_statement);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_ALLOCSTMT (
		/*INOUT*/ SQLSTMT_ID * new_statement_id,
		/*IN OPTIONAL*/ SQLSTMT_ID * cloned_statement);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_AllocStmtForRS (
                /*IN*/ SQLSTMT_ID *callStmtId,
                /*IN*/ Int32  resultSetIndex,
                /*INOUT*/ SQLSTMT_ID *resultSetStmtId);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_ALLOCSTMTFORRS (
                /*IN*/ SQLSTMT_ID *callStmtId,
                /*IN*/ Int32  resultSetIndex,
                /*INOUT*/ SQLSTMT_ID *resultSetStmtId);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_ClearDiagnostics (/*IN*/ SQLSTMT_ID *statement_id);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_CLEARDIAGNOSTICS (/*IN*/ SQLSTMT_ID *statement_id);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_CLI_VERSION ();

SQLCLI_LIB_FUNC Int32  SQL_EXEC_CloseStmt (
		/*IN*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_CLOSESTMT (
		/*IN*/ SQLSTMT_ID * statement_id);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_CreateContext(/*OUT*/ SQLCTX_HANDLE * context_handle,
			    /*IN OPTIONAL*/ char* sqlAuthId, 
			    /*IN OPTIONAL*/ Int32  suppressAutoXactStart);
  
SQLCLI_LIB_FUNC
Int32  SQL_EXEC_CREATECONTEXT(/*OUT*/ SQLCTX_HANDLE * context_handle,
			    /*IN OPTIONAL*/ char* sqlAuthId, 
			    /*IN OPTIONAL*/ Int32  suppressAutoXactStart);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_CurrentContext(/*OUT*/ SQLCTX_HANDLE * contextHandle);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_CURRENTCONTEXT(/*OUT*/ SQLCTX_HANDLE * contextHandle);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_DeleteContext(/*IN*/ SQLCTX_HANDLE contextHandle);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_DELETECONTEXT(/*IN*/ SQLCTX_HANDLE contextHandle);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_ResetContext(/*IN*/ SQLCTX_HANDLE contextHandle, /*IN*/ void *contextMsg);


SQLCLI_LIB_FUNC
Int32  SQL_EXEC_RESETCONTEXT(/*IN*/ SQLCTX_HANDLE contextHandle, /*IN*/ void *contextMsg);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_DeallocDesc (
		/*IN*/ SQLDESC_ID * desc_id );

SQLCLI_LIB_FUNC Int32  SQL_EXEC_DEALLOCDESC (
		/*IN*/ SQLDESC_ID * desc_id );

SQLCLI_LIB_FUNC Int32  SQL_EXEC_DeallocStmt (
		/*IN*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_DEALLOCSTMT (
		/*IN*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32  SQL_EXEC_DefineDesc (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN* (SQLWHAT_DESC) */ Int32 what_descriptor,
		/*IN*/ SQLDESC_ID * sql_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_DEFINEDESC (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN* (SQLWHAT_DESC) */ Int32 what_descriptor,
		/*IN*/ SQLDESC_ID * sql_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_DescribeStmt (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_DESCRIBESTMT (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC
Int32 SQL_EXEC_DisassocFileNumber(/*IN*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC
Int32 SQL_EXEC_DISASSOCFILENUMBER(/*IN*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_DropContext (
		/*IN*/ SQLCTX_HANDLE context_handle );

SQLCLI_LIB_FUNC Int32 SQL_EXEC_DROPCONTEXT (
		/*IN*/ SQLCTX_HANDLE context_handle );

SQLCLI_LIB_FUNC Int32 SQL_EXEC_Exec (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_EXEC (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ExecClose (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_EXECCLOSE (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ExecDirect(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLDESC_ID * sql_source,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);
SQLCLI_LIB_FUNC Int32 SQL_EXEC_ExecDirect2(
               /*IN*/           SQLSTMT_ID * statement_id,
               /*IN*/           SQLDESC_ID * sql_source,
	       /*IN*/           Int32 prepFlags,
               /*IN  OPTIONAL*/ SQLDESC_ID * input_descriptor,
               /*IN*/                 Int32   num_ptr_pairs,
               ...
					  );
SQLCLI_LIB_FUNC Int32 SQL_EXEC_EXECDIRECT (
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLDESC_ID * sql_source,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ExecDirectDealloc(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLDESC_ID * sql_source,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_EXECDIRECTDEALLOC(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLDESC_ID * sql_source,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ExecFetch(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_EXECFETCH(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ClearExecFetchClose(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor,
		/*IN*/ Int32 num_input_ptr_pairs,
		/*IN*/ Int32 num_output_ptr_pairs,
		/*IN*/ Int32 num_total_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_CLEAREXECFETCHCLOSE(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * input_descriptor,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor,
		/*IN*/ Int32 num_input_ptr_pairs,
		/*IN*/ Int32 num_output_ptr_pairs,
		/*IN*/ Int32 num_total_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS input_ptr_pairs[],
		/*IN*/ struct SQLCLI_PTR_PAIRS output_ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_Fetch(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_FETCH(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_FetchClose(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_FETCHCLOSE(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN OPTIONAL*/ SQLDESC_ID * output_descriptor,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_FetchMultiple(/*IN*/ SQLSTMT_ID * statement_id,
                            /*IN  OPTIONAL*/ SQLDESC_ID * output_descriptor,
                            /*IN*/                 Int32 rowset_size,
                            /*IN*/                 Int32 * rowset_status_ptr,
                            /*OUT*/                Int32 * rowset_nfetched,
                            /*IN*/                 Int32 num_quadruple_fields,
                                            ...);
SQLCLI_LIB_FUNC Int32 SQL_EXEC_FETCHMULTIPLE(/*IN*/ SQLSTMT_ID * statement_id,
                            /*IN  OPTIONAL*/ SQLDESC_ID * output_descriptor,
                            /*IN*/                 Int32 rowset_size,
                            /*IN*/                 Int32 * rowset_status_ptr,
                            /*OUT*/                Int32 * rowset_nfetched,
                            /*IN*/                 Int32 num_quadruple_fields,
                            /*IN*/   struct SQLCLI_QUAD_FIELDS   quad_fields[]);
SQLCLI_LIB_FUNC Int32 SQL_EXEC_Cancel (
		/*IN OPTIONAL*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_CANCEL (
		/*IN OPTIONAL*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDescEntryCount(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDESCENTRYCOUNT(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ID * output_descriptor);


SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDescEntryCountBasic(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*OUT*/ Int32 * num_entries);
SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDescItem(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 entry,
		/*IN* (SQLDESC_ITEM_ID) */ Int32 what_to_get,
		/*OUT OPTIONAL*/ void * numeric_value,
		/*OUT OPTIONAL*/ char * string_value,
		/*IN OPTIONAL*/ Int32 max_string_len,
		/*OUT OPTIONAL*/ Int32 * len_of_item,
		/*IN OPTIONAL*/ Int32 start_from_offset);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDESCITEM(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 entry,
		/*IN* (SQLDESC_ITEM_ID) */ Int32 what_to_get,
		/*OUT OPTIONAL*/ void * numeric_value,
		/*OUT OPTIONAL*/ char * string_value,
		/*IN OPTIONAL*/ Int32 max_string_len,
		/*OUT OPTIONAL*/ Int32 * len_of_item,
		/*IN OPTIONAL*/ Int32 start_from_offset);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDescItems(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ITEM desc_items[],
		/*IN*/ SQLDESC_ID * value_num_descriptor,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDESCITEMS(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ITEM desc_items[],
		/*IN*/ SQLDESC_ID * value_num_descriptor,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDescItems2(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 no_of_desc_items,
		/*IN*/ SQLDESC_ITEM desc_items[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDESCITEMS2(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 no_of_desc_items,
		/*IN*/ SQLDESC_ITEM desc_items[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDiagnosticsStmtInfo(
		/*IN*/ Int32 *stmt_info_items,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDIAGNOSTICSSTMTINFO(
		/*IN*/ Int32 *stmt_info_items,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDiagnosticsStmtInfo2(
		/*IN OPTIONAL*/ SQLSTMT_ID * statement_id,
		/*IN* (SQLDIAG_STMT_INFO_ITEM_ID) */ Int32 what_to_get,
		/*OUT OPTIONAL*/ void * numeric_value,
		/*OUT OPTIONAL*/ char * string_value,
		/*IN OPTIONAL*/ Int32 max_string_len,
		/*OUT OPTIONAL*/ Int32 * len_of_item);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDIAGNOSTICSSTMTINFO2(
		/*IN OPTIONAL*/ SQLSTMT_ID * statement_id,
		/*IN* (SQLDIAG_STMT_INFO_ITEM_ID) */ Int32 what_to_get,
		/*OUT OPTIONAL*/ void * numeric_value,
		/*OUT OPTIONAL*/ char * string_value,
		/*IN OPTIONAL*/ Int32 max_string_len,
		/*OUT OPTIONAL*/ Int32 * len_of_item);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDiagnosticsCondInfo(
		/*IN*/ SQLDIAG_COND_INFO_ITEM *cond_info_items,
		/*IN*/ SQLDESC_ID * cond_num_descriptor,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDIAGNOSTICSCONDINFO(
		/*IN*/ SQLDIAG_COND_INFO_ITEM *cond_info_items,
		/*IN*/ SQLDESC_ID * cond_num_descriptor,
		/*IN*/ SQLDESC_ID * output_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDiagnosticsCondInfo2(
		/*IN* (SQLDIAG_COND_INFO_ITEM_ID) */ Int32 what_to_get,
		/*IN*/ Int32 conditionNum,
		/*OUT OPTIONAL*/ Int32 * numeric_value,
		/*OUT OPTIONAL*/ char * string_value,
		/*IN OPTIONAL */ Int32 max_string_len,
		/*OUT OPTIONAL*/ Int32 * len_of_item);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETDIAGNOSTICSCONDINFO2(
		/*IN* (SQLDIAG_COND_INFO_ITEM_ID) */ Int32 what_to_get,
		/*IN*/ Int32 conditionNum,
		/*OUT OPTIONAL*/ Int32 * numeric_value,
		/*OUT OPTIONAL*/ char * string_value,
		/*IN OPTIONAL */ Int32 max_string_len,
		/*OUT OPTIONAL*/ Int32 * len_of_item);

SQLCLI_LIB_FUNC	Int32 SQL_EXEC_GetDiagnosticsCondInfo3 (
		/*IN*/ Int32 no_of_condition_items,
		/*IN*/ SQLDIAG_COND_INFO_ITEM_VALUE
			  diag_cond_info_item_values[]);

SQLCLI_LIB_FUNC	Int32 SQL_EXEC_GETDIAGNOSTICSCONDINFO3 (
		/*IN*/ Int32 no_of_condition_items,
		/*IN*/ SQLDIAG_COND_INFO_ITEM_VALUE
			  diag_cond_info_item_values[]);

/* This function retrieves the SQLSTATE from the statement diagnostics area
   if possible */  
SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetMainSQLSTATE(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/  Int32 sqlcode,
		/*OUT*/ char * sqlstate /* assumed to be char[6] */);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETMAINSQLSTATE(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/  Int32 sqlcode,
		/*OUT*/ char * sqlstate /* assumed to be char[6] */);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetCSQLSTATE(
		/*OUT*/ char * sqlstate /* assumed to be char[6] */,
		/*IN*/  Int32 sqlcode);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETCSQLSTATE(
		/*OUT*/ char * sqlstate /* assumed to be char[6] */,
		/*IN*/  Int32 sqlcode);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetCobolSQLSTATE(
		/*OUT*/ char * sqlstate /* assumed to be char[5] */,
		/*IN*/  Int32 sqlcode);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETCOBOLSQLSTATE(
		/*OUT*/ char * sqlstate /* assumed to be char[5] */,
		/*IN*/  Int32 sqlcode);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetSQLSTATE(
		/*OUT*/ char * sqlstate /* assumed to be char[6] */);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETSQLSTATE(
		/*OUT*/ char * sqlstate /* assumed to be char[6] */);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetSessionAttr(
		/*IN* (SESSIONATTR_TYPE) */ Int32 attrName,
		/*OUT OPTIONAL*/        Int32 * numeric_value,
		/*OUT OPTIONAL*/        char * string_value,
		/*IN OPTIONAL*/         Int32 max_string_len,
		/*OUT OPTIONAL*/        Int32 * len_of_item);

SQLCLI_LIB_FUNC	Int32 SQL_EXEC_GetUniqueQueryIdAttrs (
                /*IN*/    char * uniqueQueryId,
		/*IN*/    Int32 uniqueQueryIdLen,
		/*IN*/    Int32 no_of_attrs,
		/*INOUT*/ UNIQUEQUERYID_ATTR unique_queryid_attrs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetStmtAttr(
                /*IN*/                  SQLSTMT_ID * statement_id,
		/*IN* (SQLATTR_TYPE) */ Int32 attrName,
		/*OUT OPTIONAL*/        Int32 * numeric_value,
		/*OUT OPTIONAL*/        char * string_value,
		/*IN OPTIONAL*/         Int32 max_string_len,
		/*OUT OPTIONAL*/        Int32 * len_of_item);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETSTMTATTR(
                /*IN*/                  SQLSTMT_ID * statement_id,
		/*IN* (SQLATTR_TYPE) */ Int32 attrName,
		/*OUT OPTIONAL*/        Int32 * numeric_value,
		/*OUT OPTIONAL*/        char * string_value,
		/*IN OPTIONAL*/         Int32 max_string_len,
		/*OUT OPTIONAL*/        Int32 * len_of_item);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetStmtAttrs(
                /*IN*/                  SQLSTMT_ID * statement_id,
                /*IN*/                  Int32 number_of_attrs,
		/*INOUT*/               SQLSTMT_ATTR attrs[],
		/*OUT OPTIONAL*/        Int32 * num_returned);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETSTMTATTRS(
                /*IN*/                  SQLSTMT_ID * statement_id,
                /*IN*/                  Int32 number_of_attrs,
		/*INOUT*/               SQLSTMT_ATTR attrs[],
		/*OUT OPTIONAL*/        Int32 * num_returned);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GETMPCATALOG(
		/*IN*/    char * AnsiObjName,
		/*INOUT*/ char * MPObjName,
		/*IN*/    Int32 MPObjNameMaxLen,
		/*INOUT*/ Int32 * MPObjNameLen,
		/*OUT*/   char * MPCatalogName,
		/*IN*/    Int32 MPCatalogNameMaxLen,
		/*OUT*/   Int32 * MPCatalogNameLen);


SQLCLI_LIB_FUNC Int32 SQL_EXEC_Prepare(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLDESC_ID * sql_source);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_PREPARE(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLDESC_ID * sql_source);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_Prepare2(
     /*IN*/    SQLSTMT_ID * statement_id,
     /*IN*/    SQLDESC_ID * sql_source,
     /*INOUT*/ char * gencode_ptr,
     /*IN*/    Int32 gencode_len,
     /*INOUT*/ Int32 * ret_gencode_len,
     /*INOUT*/ SQL_QUERY_COST_INFO *query_cost_info,
     /*INOUT*/ SQL_QUERY_COMPILER_STATS_INFO *comp_stats_info,
     /*INOUT*/ char * uniqueQueryId,
     /*INOUT*/ Int32 * uniqueQueryIdLen,
     /*IN*/    UInt32 flags);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ResDescName(
		/*INOUT*/ SQLDESC_ID * statement_id,
		/*IN OPTIONAL*/ SQLSTMT_ID * from_statement,
		/*IN OPTIONAL (SQLWHAT_DESC) */ Int32 what_desc);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_RESDESCNAME(
		/*INOUT*/ SQLDESC_ID * statement_id,
		/*IN OPTIONAL*/ SQLSTMT_ID * from_statement,
		/*IN OPTIONAL (SQLWHAT_DESC) */ Int32 what_desc);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_ResStmtName(
		/*INOUT*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_RESSTMTNAME(
		/*INOUT*/ SQLSTMT_ID * statement_id);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetCursorName(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLSTMT_ID * cursor_name);


SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETCURSORNAME(
		/*IN*/ SQLSTMT_ID * statement_id,
		/*IN*/ SQLSTMT_ID * cursor_name);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescEntryCount(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ID * input_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETDESCENTRYCOUNT(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ID * input_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescEntryCountBasic(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 num_entries);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescItem(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 entry,
		/*IN* (SQLDESC_ITEM_ID) */ Int32 what_to_set, 
		/*IN OPTIONAL*/ long   numeric_value,
		/*IN OPTIONAL*/ char * string_value);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETDESCITEM(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 entry,
		/*IN* (SQLDESC_ITEM_ID) */ Int32 what_to_set,
		/*IN OPTIONAL*/ long   numeric_value,
		/*IN OPTIONAL*/ char * string_value);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescItems(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ITEM desc_items[],
		/*IN*/ SQLDESC_ID * value_num_descriptor,
		/*IN*/ SQLDESC_ID * input_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETDESCITEMS(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ SQLDESC_ITEM desc_items[],
		/*IN*/ SQLDESC_ID * value_num_descriptor,
		/*IN*/ SQLDESC_ID * input_descriptor);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescItems2(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 no_of_desc_items,
		/*IN*/ SQLDESC_ITEM desc_items[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETDESCITEMS2(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 no_of_desc_items,
		/*IN*/ SQLDESC_ITEM desc_items[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescPointers(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 starting_entry,
		/*IN*/ Int32 num_ptr_pairs,
                ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETDESCPOINTERS(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 starting_entry,
		/*IN*/ Int32 num_ptr_pairs,
		/*IN*/ struct SQLCLI_PTR_PAIRS ptr_pairs[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetRowsetDescPointers(SQLDESC_ID * desc_id,
                                           Int32 rowset_size,
                                           Int32 *rowset_status_ptr,
                                           Int32 starting_entry,
                                           Int32 num_quadruple_fields,
                                           ...);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETROWSETDESCPOINTERS(SQLDESC_ID * desc_id,
                                           Int32 rowset_size,
                                           Int32 *rowset_status_ptr,
                                           Int32 starting_entry,
                                           Int32 num_quadruple_fields,
                             struct SQLCLI_QUAD_FIELDS    quad_fields[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetStmtAttr(
                /*IN*/                  SQLSTMT_ID * statement_id,
		/*IN* (SQLATTR_TYPE) */ Int32 attrName,
		/*IN OPTIONAL*/         Int32 numeric_value,
		/*IN OPTIONAL*/         char * string_value);


SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETSTMTATTR(
                /*IN*/                  SQLSTMT_ID * statement_id,
		/*IN* (SQLATTR_TYPE) */ Int32 attrName,
		/*IN OPTIONAL*/         Int32 numeric_value,
		/*IN OPTIONAL*/         char * string_value);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SwitchContext(
		/*IN*/ SQLCTX_HANDLE context_handle,
		/*OUT OPTIONAL*/ SQLCTX_HANDLE * prev_context_handle);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SWITCHCONTEXT(
		/*IN*/ SQLCTX_HANDLE context_handle,
		/*OUT OPTIONAL*/ SQLCTX_HANDLE * prev_context_handle);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_Xact(
		/*IN* (SQLTRANS_COMMAND) */ Int32 command,
		/*OUT OPTIONAL*/ SQLDESC_ID * transid_descriptor); 

SQLCLI_LIB_FUNC Int32 SQL_EXEC_XACT(
		/*IN* (SQLTRANS_COMMAND) */ Int32 command,
		/*OUT OPTIONAL*/ SQLDESC_ID * transid_descriptor); 


SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetAuthID(
	/*IN*/                          char   * authID,
	/*IN SQLAUTHID_TYPE */          Int32    authIDType,
	/* OUT Primary role name */     char   * primaryRoleName,
	/* OUT Primary role name len */ short  * primaryRoleNameLen,
        /* OUT User redef time       */ Int64  * redefTime);  // NA_64BIT

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SETAUTHID(
		/*IN*/                        char   * authID,
		/*IN SQLAUTHID_TYPE */ Int32 authIDType,
		/* OUT OPTIONAL primaryRole*/ char *primaryRole,
		/* OUT OPTIONAL  role len*/ short *primaryRoleLen,
                /* OUT OPTIONAL userRedefTime*/ Int64 *redefTime); // NA_64BIT


SQLCLI_LIB_FUNC Int32 SQL_EXEC_DecodeAndFormatKey(
               /*IN*/void    * RCB_Pointer_Addr,    
	       /*IN*/void    * KeyAddr,             
	       /*IN*/Int32     KeyLength,          
	       /*INOUT*/void * DecodedKeyBufAddr,   
	       /*INOUT*/void * FormattedKeyBufAddr, 
	       /*IN*/Int32     FormattedKeyBufLen,  
	       /*OUT*/Int32  * NeededKeyBufLen  );

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetPartitionKeyFromRow(
	       /*IN*/void    * RCB_Pointer_Addr,    
	       /*IN*/void    * Row_Addr,          
	       /*IN*/Int32     Row_Length,        
	       /*INOUT*/void * KeyAddr,
	       /*IN*/Int32     KeyLength);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_LocaleToUTF8 (
               /*IN*/Int32 conv_charset,
               /*IN*/void     * Input_Buffer_Addr,
               /*IN*/Int32      Input_Buffer_Length,
               /*IN/OUT*/void * Output_Buffer_Addr,
               /*IN*/Int32      Output_Buffer_Length,
               /*OUT*/void   ** First_Untranslated_Char_Addr,
               /*OUT*/Int32   * Output_Data_Length,
               /*IN*/Int32      add_null_at_end_Flag,
               /*OUT*/Int32   * num_translated_char
   );

SQLCLI_LIB_FUNC Int32 SQL_EXEC_UTF8ToLocale(
               /*IN*/Int32 conv_charset,
               /*IN*/void     * Input_Buffer_Addr,
               /*IN*/Int32      Input_Buffer_Length,
               /*IN/OUT*/void * Output_Buffer_Addr,
               /*IN*/Int32      Output_Buffer_Length,
               /*OUT*/void   ** First_Untranslated_Char_Addr,
               /*OUT*/Int32   * Output_Data_Length,
               /*IN*/Int32      add_null_at_end_Flag,
               /*IN*/Int32      allow_invalids,
               /*OUT*/Int32   * num_translated_char,
               /*IN*/void     * substitution_char_addr
   );

SQLCLI_LIB_FUNC Int32 SQL_EXEC_LocaleToUTF16 (
               /*IN*/Int32      conv_charset,
               /*IN*/void     * Input_Buffer_Addr,
               /*IN*/Int32      Input_Buffer_Length,
               /*IN/OUT*/void * Output_Buffer_Addr,
               /*IN*/Int32      Output_Buffer_Length,
               /*OUT*/void   ** First_Untranslated_Char_Addr,
               /*OUT*/Int32   * Output_Data_Length,
               /*IN*/Int32      conv_flags,
               /*IN*/Int32      add_null_at_end_Flag,
               /*OUT*/Int32   * num_translated_char
   );

SQLCLI_LIB_FUNC Int32 SQL_EXEC_UTF16ToLocale(
               /*IN*/Int32 conv_charset,
               /*IN*/void     * Input_Buffer_Addr,
               /*IN*/Int32      Input_Buffer_Length,
               /*IN/OUT*/void * Output_Buffer_Addr,
               /*IN*/Int32      Output_Buffer_Length,
               /*OUT*/void   ** First_Untranslated_Char_Addr,
               /*OUT*/Int32   * Output_Data_Length,
               /*IN*/Int32      conv_flags,
               /*IN*/Int32      add_null_at_end_Flag,
               /*IN*/Int32      allow_invalids,
               /*OUT*/Int32   * num_translated_char,
               /*IN*/void     * substitution_char_addr
   );
SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetSecInvalidKeys(
            /* IN */   Int32 numSiKeys,
           /* IN */    SQL_SIKEY siKeys[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetSecInvalidKeys(
            /* IN */      Int64 prevTimestamp,
            /* IN/OUT */  SQL_SIKEY siKeys[],
            /* IN */      Int32 maxNumSiKeys,
            /* IN/OUT */  Int32 *returnedNumSiKeys,
            /* IN/OUT */  Int64 *maxTimestamp);


SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetStatistics2(
            /* IN */  	short statsReqType,
	    /* IN */  	char *statsReqStr,
	    /* IN */  	Int32 statsReqStrLen,
	    /* IN */	short activeQueryNum,
	    /* IN */ 	short statsMergeType,
	    /* OUT */ 	short *statsCollectType,
	    /* IN/OUT */ SQLSTATS_DESC sqlstats_desc[],
	    /* IN */ 	Int32 max_stats_desc,
	    /* OUT */	Int32 *no_returned_stats_desc);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetStatisticsItems(
            /* IN */  	short statsReqType,
	    /* IN */  	char *queryId,
	    /* IN */  	Int32 queryIdLen,
            /* IN */	Int32 no_of_stats_items,
	    /* IN/OUT */   SQLSTATS_ITEM sqlstats_items[]);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetChildQueryInfo(
     /*IN*/    SQLSTMT_ID * statement_id,
     /*INOUT*/ char * uniqueQueryId,
     /*IN */   Int32 uniqueQueryIdMaxLen,
     /*INOUT*/ Int32 * uniqueQueryIdLen,
     /*INOUT*/ SQL_QUERY_COST_INFO *query_cost_info,
     /*INOUT*/ SQL_QUERY_COMPILER_STATS_INFO *comp_stats_info);

#ifdef __cplusplus
}

/* temporary functions -- for use by sqlcat simulator only */

SQLCLI_LIB_FUNC Int32 SQL_EXEC_AllocDesc (
	        /*INOUT*/ SQLDESC_ID * desc_id,
		/*IN OPTIONAL*/ Int32 max_entries);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_GetDescEntryCount(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*OUT*/ Int32 * num_entries);

SQLCLI_LIB_FUNC Int32 SQL_EXEC_SetDescEntryCount(
		/*IN*/ SQLDESC_ID * sql_descriptor,
		/*IN*/ Int32 num_entries);

#endif /*__cplusplus*/

#endif /*SQLCLI_HDR*/
