blob: 7fb166c26ac50a17cf4e52ea1d68ad6655f18d0e [file] [log] [blame]
/*************************************************************************
// @@@ 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 @@@
**************************************************************************/
//
// MODULE: corecommon.h
#ifndef _CORECOMMON_DEFINED
#define _CORECOMMON_DEFINED
// T2_REPO
//typedef long int64;
//typedef char BOOL;
extern "C" {
void TIME( short * a );
}
char *_i64toa( long long value, char *string, int radix );
// T2_REPO
#include <set>
#include <string>
#include <cstring>
#include "tip.h"
#include "sqlcli.h"
#include "idltype.h"
// +++ T2_REPO
#include <PubQueryStats.h>
#include <platform_ndcs.h>
//
#define MAX_STMT_LABEL_LEN 512
#define MAX_CURSOR_NAME_LEN 512
#define MAX_STMT_NAME_LEN 512
#define MAX_ANSI_NAME_LEN 512
#define MAX_TEXT_SID_LEN 186
#define EXT_FILENAME_LEN 34
#define MAX_DBNAME_LEN 25 /* (1+7) + (1+7) + (1+8) */
/* \SYSTEM.$VOLUME.SUBVOLUME */
#define MAX_DESC_NAME_LEN 512
#define MAX_MODULE_NAME_LEN 368 //(128+128+128+2)
/* **Rowsets **/
#define MAX_SQLDESC_NAME_LEN 512
#define MAX_ERROR_MSG_LEN 1024
#define MAX_INTERNAL_STMT_LEN 512
#define MAX_PARAMETER_NAME_LEN 512
#define MAX_ANSI_NAME_LEN 512
#define MAX_FETCH_BUFFER_SIZE 0x80000
// +++ T2_REPO
#define MAX_USERNAME_LEN 128
#define MAX_SQL_IDENTIFIER_LEN 512
#define MAX_APPLICATIONID_LENGTH 128
#define MAX_DSOURCE_NAME 512
#define MAX_IP_ADDRESS_LEN 128
#define MAX_ROLE_LEN 128
#define MAX_COMPUTER_NAME_LEN 16*4 //limited in ODBC driver
#define MAX_APPLICATION_NAME_LEN 128*4 //limited in ODBC driver
#define MAX_QUERY_NAME_LEN 160
#define MAX_QUERY_ID_LEN 160
#define RMS_STORE_SQL_SOURCE_LEN 254
#define MAX_TXN_STR_LEN 64
#define SUB_QRY_TYPE_LEN 36
#define PAR_SYS_NAME_LEN 128
#define MAX_RULE_NAME_LEN 24*4
#ifndef MAX_SESSION_ID_LEN // This should be available in sqlcli.h
#define MAX_SESSION_ID_LEN 104 // 103 + null terminator.
#endif
#define SESSION_ID_LEN MAX_SESSION_ID_LEN
#define STATISTICS_INTERVAL 60
#define STATISTICS_LIMIT 60
// statement statistics values ranges from 256 thru 32768
#define STMTSTAT_NONE 0 // during construct and destruct time
#define STMTSTAT_SQL 256
#define STMTSTAT_PREPARE 512
#define STMTSTAT_EXECUTE 1024
#define STMTSTAT_EXECDIRECT 2048
#define STMTSTAT_FETCH 4096
#define STMTSTAT_CLOSE 8192
// +++ T2_REPO - ToDo change NDCS to DCS
//-------------------------- NDCS SUBSTATE ---------------------------
typedef enum _NDCS_SUBSTATE
{
NDCS_INIT = 0,
NDCS_DLG_INIT,
NDCS_CONN_IDLE,
NDCS_DLG_TERM,
NDCS_DLG_BREAK,
NDCS_STOP_SRVR,
NDCS_RMS_ERROR,
NDCS_REPOS_IDLE,
NDCS_REPOS_INTERVAL,
NDCS_REPOS_PARTIAL,
NDCS_EXEC_INTERVAL,
NDCS_CONN_RULE_CHANGED,
NDCS_CLOSE,
NDCS_PREPARE,
NDCS_WMS_ERROR,
NDCS_QUERY_CANCELED,
NDCS_QUERY_REJECTED,
//
} NDCS_SUBSTATE;
typedef enum _QUERY_STATE
{
QUERY_INIT = 0,
//
QUERY_WAITING = 0x0100,
QUERY_WAITING_MAX_CPU_BUSY = 0x0101,
QUERY_WAITING_MAX_MEM_USAGE = 0x0102,
QUERY_WAITING_RELEASED_BY_ADMIN = 0x0103,
QUERY_WAITING_MAX_INSTANCE_EXEC_QUERIES = 0x0104,
QUERY_WAITING_TXN_BACKOUT = 0x0105,
QUERY_WAITING_MAX_SSD_USAGE = 0x0106, //ssd overflow
QUERY_WAITING_MAX_ESPS = 0x0107,
QUERY_WAITING_EST_MAX_CPU_BUSY = 0x0108,
QUERY_WAITING_MAX_SERVICE_EXEC_QUERIES = 0x0109,
QUERY_WAITING_CANARY_EXEC = 0x010A,
//
QUERY_EXECUTING = 0x0200,
QUERY_EXECUTING_RELEASED_BY_ADMIN = 0x0201,
QUERY_EXECUTING_RELEASED_BY_RULE = 0x0202,
QUERY_EXECUTING_CANCEL_IN_PROGRESS = 0x0203,
QUERY_EXECUTING_CANCEL_FAILED = 0x0204,
QUERY_EXECUTING_CANCEL_FAILED_8026 = 0x0205,
QUERY_EXECUTING_CANCEL_FAILED_8027 = 0x0206,
QUERY_EXECUTING_CANCEL_FAILED_8028 = 0x0207,
QUERY_EXECUTING_CANCEL_FAILED_8029 = 0x0208,
QUERY_EXECUTING_CANCEL_FAILED_8031 = 0x0209,
//
QUERY_HOLDING = 0x0400,
QUERY_HOLDING_LOAD = 0x0401,
QUERY_HOLDING_REPREPARING = 0x0402,
QUERY_HOLDING_EXECUTING_SQL_CMD = 0x0403,
QUERY_HOLDING_BY_RULE = 0x0404,
QUERY_HOLDING_BY_ADMIN = 0x0405,
//
QUERY_COMPLETED = 0x0800,
QUERY_COMPLETED_HOLD_TIMEOUT = 0x0801,
QUERY_COMPLETED_EXEC_TIMEOUT = 0x0802,
QUERY_COMPLETED_BY_ADMIN = 0x0803,
QUERY_COMPLETED_QUERY_NOT_FOUND = 0x0804,
QUERY_COMPLETED_CONNECTION_FAILED = 0x0805,
QUERY_COMPLETED_NDCS_PROCESS_FAILED = 0x0806,
QUERY_COMPLETED_CPU_FAILED = 0x0807,
QUERY_COMPLETED_SEGMENT_FAILED = 0x0808,
QUERY_COMPLETED_BY_RULE = 0x0809,
QUERY_COMPLETED_SERVICE_NOT_ACTIVE = 0x080A,
QUERY_COMPLETED_HARDWARE_FAILURE = 0x080B,
QUERY_COMPLETED_UNEXPECTED_STATE = 0x080C,
QUERY_COMPLETED_CLIENT_DISAPPEARED = 0x080D,
QUERY_COMPLETED_BY_CLIENT = 0x080E,
//
QUERY_COMPLETED_NDCS_DLG_INIT = 0x080F,
QUERY_COMPLETED_NDCS_CONN_IDLE = 0x0810,
QUERY_COMPLETED_NDCS_DLG_TERM = 0x0811,
QUERY_COMPLETED_NDCS_DLG_BREAK = 0x0812,
QUERY_COMPLETED_NDCS_STOP_SRVR = 0x0813,
QUERY_COMPLETED_NDCS_RMS_ERROR = 0x0814,
QUERY_COMPLETED_NDCS_REPOS_IDLE = 0x0815,
QUERY_COMPLETED_NDCS_REPOS_INTERVAL = 0x0816,
QUERY_COMPLETED_NDCS_REPOS_PARTIAL = 0x0817,
QUERY_COMPLETED_NDCS_EXEC_INTERVAL = 0x0818,
QUERY_COMPLETED_NDCS_CONN_RULE_CHANGED = 0x0819,
QUERY_COMPLETED_NDCS_CLOSE = 0x081A,
QUERY_COMPLETED_NDCS_PREPARE = 0x081B,
QUERY_COMPLETED_NDCS_WMS_ERROR = 0x081C,
//
QUERY_REJECTED = 0x1000,
QUERY_REJECTED_BY_ADMIN = 0x1001,
QUERY_REJECTED_CONNECTION_FAILED = 0x1002,
QUERY_REJECTED_NDCS_PROCESS_FAILED = 0x1003,
QUERY_REJECTED_CPU_FAILED = 0x1004,
QUERY_REJECTED_SEGMENT_FAILED = 0x1005,
QUERY_REJECTED_QMSGCANCELLED = 0x1006,
QUERY_REJECTED_VERSION_MISMATCH = 0x1007,
QUERY_REJECTED_WMSONHOLD = 0x1008,
QUERY_REJECTED_MAX_QUERIES_REACHED = 0x1009,
QUERY_REJECTED_SERVICE_NOT_FOUND = 0x100A,
QUERY_REJECTED_SERVICE_ON_HOLD = 0x100B,
QUERY_REJECTED_BY_RULE = 0x100C,
QUERY_REJECTED_UNKNOWNUSER = 0x100D,
QUERY_REJECTED_UNEXPECTED_STATE = 0x100E,
QUERY_REJECTED_HOLD_TIMEOUT = 0x100F,
QUERY_REJECTED_WAIT_TIMEOUT = 0x1010,
QUERY_REJECTED_CLIENT_DISAPPEARED = 0x1011,
QUERY_REJECTED_LONG_TRANS_ABORTING = 0x1012,
//
QUERY_SUSPENDED = 0x2000,
QUERY_SUSPENDED_BY_ADMIN = 0x2001,
QUERY_SUSPENDED_BY_RULE = 0x2002,
QUERY_SUSPENDED_CANCELED = 0x2003,
QUERY_SUSPENDED_CANCELED_BY_ADMIN = 0x2004,
QUERY_SUSPENDED_CANCELED_BY_RULE = 0x2005,
QUERY_SUSPENDED_CANCELED_BY_TIMEOUT = 0x2007,
//
} QUERY_STATE;
// T2_REPO
#define EXTERNAL_STMT 0
#define INTERNAL_STMT 1
#define ODBC_SRVR_COMPONENT 4
#define NT_VERSION_MAJOR_1 1
#define NT_VERSION_MINOR_0 0
#define NT_BUILD_1 1
#define SQLERRWARN 1
#define ESTIMATEDCOSTRGERRWARN 2
#define MAX_PROCESS_NAME_LEN 9
#define INFINITE_SRVR_IDLE_TIMEOUT -1
#define INFINITE_CONN_IDLE_TIMEOUT -1
typedef enum _STOP_TYPE
{
STOP_UNKNOWN = -1,
STOP_ABRUPT,
STOP_WHEN_DISCONNECTED,
STOP_SRVR
} STOP_TYPE;
#define ODBCMX_SERVER "ODBC/MX Server"
#define PROGRAM_ERROR -11
#define NULL_VALUE_ERROR "Null Value in a non nullable column"
#define NULL_VALUE_ERROR_SQLCODE -1
#define NULL_VALUE_ERROR_SQLSTATE "23000"
#define SQLSVC_EXCEPTION_SMD_STMT_LABEL_NOT_FOUND "SMD STMT LABEL NOT FOUND"
#define SQLSVC_EXCEPTION_UNSUPPORTED_SMD_DATA_TYPE "UNSUPPORTED INPUT SMD DATA TYPE"
#define SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED "Wildcard characters in Catalog/Qualifier or Schema/Owner or Table name are not supported"
#define SQLSVC_EXCEPTION_NULL_SQL_STMT "Null SQL Statement"
#define SQLSVC_EXCEPTION_INVALID_ROW_COUNT "Invalid Row Count"
#define SQLSVC_EXCEPTION_INVALID_ROW_COUNT_AND_SELECT "Invalid Row Count and Select Stmt"
#define SQLSVC_EXCEPTION_INVALID_RESOURCE_OPT_CLOSE "Invalid Resource Option for Close"
#define SQLSVC_EXCEPTION_INVALID_TRANSACT_OPT "Invalid TransactOpt"
#define SQLSVC_EXCEPTION_INVALID_OPTION_VALUE_NUM "Invalid OptionValueNum"
#define SQLSVC_EXCEPTION_INVALID_OPTION_VALUE_STR "Invalid OptionValueStr (too big)"
#define SQLSVC_EXCEPTION_INVALID_CONNECTION_OPTION "Invalid ConnectionOpt"
#define SQLSVC_EXCEPTION_PREPARE_FAILED "Prepare Failed"
#define SQLSVC_EXCEPTION_EXECUTE_FAILED "Execute Failed"
#define SQLSVC_EXCEPTION_EXECDIRECT_FAILED "ExecDirect Failed"
#define SQLSVC_EXCEPTION_EXECSPJRS_FAILED "ExecSPJRS Failed"
#define SQLSVC_EXCEPTION_CLOSE_FAILED "Close Failed"
#define SQLSVC_EXCEPTION_FETCH_FAILED "Fetch Failed"
#define SQLSVC_EXCEPTION_CANCEL_FAILED "Cancel Failed"
#define SQLSVC_EXCEPTION_ENDTRANSACTION_FAILED "EndTransaction Failed"
#define SQLSVC_EXCEPTION_SETCONNECTOPTION_FAILED "SetConnectionOption Failed"
#define SQLSVC_EXCEPTION_DATA_ERROR "Input Parameter/Output Data Error"
#define SQLSVC_EXCEPTION_USER_CATALOG_NAME_ERROR "NULL Value in guardian name in mapping table"
#define SQLSVC_EXCEPTION_CATSMD_MODULE_ERROR "The Catalog SMD file is either corrupted or not found or cursor not found"
#define SQLSVC_EXCEPTION_BUFFER_ALLOC_FAILED "Buffer Allocation Failed"
#define SQLSVC_EXCEPTION_INVALID_HANDLE "Error while allocating Handles in SQL/MX"
#define SQLSVC_EXCEPTION_PREPARE_FAILED "Error while preparing the query"
#define SQLSVC_EXCEPTION_NOWAIT_ERROR "Error in thread synchronizing functions - Vendor code is FS Error"
#define SQLSVC_EXCEPTION_INVALID_SCHEMA_VERSION "Invalid Schema version" // Used for Metadata schemaVersion setup
#define SQLERRWARN 1
#define ESTIMATEDCOSTRGERRWARN 2
#define CATALOG_NT 0
#define CATALOG_ANSI 1
#define CATALOG_SHORTANSI 2
// ODBC_SERVER_ERROR should be different than the possible values of SQLRETURN as defined in SQLTypes.h
// Else there may be overlap between SQLRETRUN values and this value
// Same is the case with ODBC_RG_ERROR and ODBC_RG_WARNING
#define ODBC_SERVER_ERROR -101
#define ODBC_RG_ERROR -102
#define ODBC_RG_WARNING -103
#define SQL_RETRY_COMPILE_AGAIN -104
#define SQL_QUERY_CANCELLED -105
#define CANCEL_NOT_POSSIBLE -106
#define NOWAIT_ERROR -107
#define SQL_RS_DOES_NOT_EXIST -108
#define TYPE_UNKNOWN 0x0000
#define TYPE_SELECT 0x0001
#define TYPE_UPDATE 0x0002
#define TYPE_DELETE 0x0004
#define TYPE_INSERT 0x0008
#define TYPE_EXPLAIN 0x0010
#define TYPE_CREATE 0x0020
#define TYPE_GRANT 0x0040
#define TYPE_DROP 0x0080
#define TYPE_CALL 0x0100
#define TYPE_INSERT_PARAM 0x0120 //Added for CQDs filter
typedef enum _SRVR_TYPE
{
SRVR_UNKNOWN = 0,
AS_SRVR,
CORE_SRVR,
CFG_SRVR
} SRVR_TYPE;
typedef enum SRVR_STATE
{
SRVR_UNINITIALIZED = 0,
SRVR_STARTING,
SRVR_STARTED,
SRVR_AVAILABLE,
SRVR_CONNECTING,
SRVR_CONNECTED,
SRVR_DISCONNECTING,
SRVR_DISCONNECTED,
SRVR_STOPPING,
SRVR_STOPPED,
SRVR_ABENDED,
SRVR_CONNECT_REJECTED,
SRVR_CONNECT_FAILED,
SRVR_CLIENT_DISAPPEARED,
SRVR_ABENDED_WHEN_CONNECTED, // This combination state is used to update stat of DS
SRVR_STATE_FAULT,
SRVR_STOP_WHEN_DISCONNECTED
} SRVR_STATE;
struct VERSION_t {
IDL_short componentId;
IDL_short majorVersion;
IDL_short minorVersion;
char pad_to_offset_8_[2];
IDL_unsigned_long buildId;
};
typedef VERSION_t VERSION_def;
typedef struct _SRVR_GLOBAL_Def
{
// +++ T2_REPO TODO - Temporarily assignment...needs to come from properties
_SRVR_GLOBAL_Def()
{
m_bStatisticsEnabled = true;
m_statisticsPubType = STATISTICS_AGGREGATED;
m_iAggrInterval = STATISTICS_INTERVAL;
m_iQueryPubThreshold = STATISTICS_LIMIT;
resourceStatistics = 0;
}
long dialogueId;
char userSID[MAX_TEXT_SID_LEN+1];// This points to the SID in which the server is running
// If this is same as the incoming SID do not flush the
// cache
tip_handle_t tip_gateway;
char *pxid_url;
long long local_xid;
bool failOverEnabled;
long clientACP;
long clientErrorLCID;
long clientLCID;
bool useCtrlInferNCHAR;
char DefaultCatalog[129];
char DefaultSchema[129];
char CurrentCatalog[129]; // Added for MFC
char CurrentSchema[129]; // Added for MFC
bool jdbcProcess; // This flag is used to determine the query for SQLTables
short nowaitOn;
short nowaitFilenum;
char SystemCatalog[129]; // MX system catalog name
short boolFlgforInitialization; // Flag intorduced for Connect/disconnect imp.
// +++ T2_REPO
long resourceStatistics;
bool m_bStatisticsEnabled;
statistics_type m_statisticsPubType;
int m_iAggrInterval;
int m_iQueryPubThreshold;
// +++ T2_REPO TODO - These need to be initialized
int isoMapping;
long process_id;
char m_ProcName[MS_MON_MAX_PROCESS_NAME];
int receiveThrId;
int m_NodeId;
char IpAddress[MAX_IP_ADDRESS_LEN];
char sessionId[SESSION_ID_LEN];
long userID;
char QSRoleName[MAX_ROLE_LEN + 1];
char ClientComputerName[MAX_COMPUTER_NAME_LEN + 1];
char ApplicationName[MAX_APPLICATION_NAME_LEN + 1];
// Used by rowsets logic - need to be initialized
long m_FetchBufferSize;
bool fetchAhead;
VERSION_def srvrVersion;
VERSION_def sqlVersion;
VERSION_def drvrVersion;
VERSION_def appVersion;
Int64 maxRowsFetched; // Not sure will this be useful in the future, just keep it.
bool enableLongVarchar;
//
} SRVR_GLOBAL_Def ;
// These defines should be same as what is in DrvrSrvr.h of ODBC
#define SET_CATALOG 1000
#define SET_SCHEMA 1001
#define SET_LOCATION 1002
#define SET_INFER_NCHAR 1003
#define RESET_DEFAULTS 1004
#define SET_ODBC_PROCESS 1005
#define SET_CATALOGNAMETYPE 1006
#define SET_SETANDCONTROLSTMTS 1007
#define SET_NAMETYPE 1008
#define SET_JDBC_PROCESS 1009
#define SET_MPLOC 1010
#define SET_OLT_QUERY_OPT 1011
#define CLEAR_CATALOG 1012
#define CLEAR_SCHEMA 1013
#define CQD_DOOM_USER_TXN 1014
#define CQD_PCODE_OFF 1015
#define BEGIN_SESSION 1016
#define END_SESSION 1017
typedef struct tagDATE_TYPE
{
unsigned short year;
unsigned char month;
unsigned char day;
} DATE_TYPES;
typedef struct tagTIME_TYPE
{
unsigned char hour;
unsigned char minute;
unsigned char second;
} TIME_TYPES;
#define SQLCLI_ODBC_VERSION 2
#define SQLCLI_ODBC_MODULE_VERSION 1
#define NOWAIT_PENDING -8002
// Errors returned from SQL_EXEC_AllocStmtForRS()
#define STMT_ALREADY_EXISTS -8802
#define STMT_DOES_NOT_EXIST -8804
#define STMT_IS_NOT_CALL -8909
#define RS_INDEX_OUT_OF_RANGE -8910
#define RS_ALREADY_EXISTS -8911
#define RS_ALLOC_ERROR -8912
#define RS_PREPARE_NOT_ALLOWED -8913
#define RS_REOPEN_NOT_ALLOWED -8914
// Errors returned from SQL_EXEC_DescribeStmt or SQL_EXEC_Exec
#define RS_DOES_NOT_EXIST -8915
#define STMT_ID_NULL_ERROR -29400
#define DIALOGUE_ID_NULL_ERROR -29401
#define STMT_ID_MISMATCH_ERROR -29402
#define HOLD_CURSORS_OVER_COMMIT 1
#define CLOSE_CURSORS_AT_COMMIT 2
#define TYPE_BLOB 2004
#define TYPE_CLOB 2005
#define CLOB_HEADING "JDBC_CLOB_COLUMN -"
#define BLOB_HEADING "JDBC_BLOB_COLUMN -"
#define INVALID_SQL_QUERY_STMT_TYPE 255
typedef struct {
//unsigned long _length; 64 change
unsigned int _length;
unsigned char *_buffer;
} SQL_DataValue_def;
typedef struct {
long dataType;
short dataInd;
SQL_DataValue_def dataValue;
long dataCharset;
} SQLValue_def;
typedef struct {
//unsigned long _length; 64 bit change
unsigned int _length;
SQLValue_def *_buffer;
} SQLValueList_def;
typedef struct tag {
long version;
long dataType;
long datetimeCode;
long maxLen;
short precision;
short scale;
long vc_ind_length;
unsigned char nullInfo;
char colNm[129];
char colLabel[129];
unsigned char signType;
long ODBCDataType;
short ODBCPrecision;
long SQLCharset;
long ODBCCharset;
char catalogNm[129];
char schemaNm[129];
char tableNm[129];
long fsDataType;
long intLeadPrec;
long paramMode;
} SQLItemDesc_def;
typedef struct SQLItemDescList_def_seq_ {
unsigned long _length;
SQLItemDesc_def *_buffer;
} SQLItemDescList_def;
typedef struct {
long rowId;
long errorDiagnosticId;
long sqlcode;
char sqlstate[6];
char *errorText;
long operationAbortId;
long errorCodeType;
char *Param1;
char *Param2;
char *Param3;
char *Param4;
char *Param5;
char *Param6;
char *Param7;
} ERROR_DESC_def;
typedef struct {
unsigned long _length;
ERROR_DESC_def *_buffer;
} ERROR_DESC_LIST_def;
typedef struct {
char AttrNm[129];
long long Limit;
char Action[129];
long long ActualValue;
} RES_HIT_DESC_def;
struct odbc_SQLSvc_SQLError { /* Exception */
ERROR_DESC_LIST_def errorList;
};
typedef struct {
unsigned int _length;
int *_buffer;
} ROWS_COUNT_LIST_def;
typedef struct {
long contents[4];
} CEE_handle_def;
struct odbc_SQLSvc_ParamError { /* Exception */
char *ParamDesc;
};
struct odbc_SQLSvc_SQLQueryCancelled { /* Exception */
long sqlcode;
};
struct odbc_SQLSvc_SQLInvalidHandle { /* Exception */
long sqlcode;
};
struct odbc_SQLSvc_SQLRetryCompile { /* Exception */
ERROR_DESC_LIST_def errorList;
};
struct ExceptionStruct {
long exception_nr;
long exception_detail;
union {
odbc_SQLSvc_ParamError ParamError;
odbc_SQLSvc_SQLError SQLError;
odbc_SQLSvc_SQLInvalidHandle SQLInvalidHandle;
odbc_SQLSvc_SQLRetryCompile SQLRetryCompile;
odbc_SQLSvc_SQLQueryCancelled SQLQueryCancelled;
} u;
};
// Added for MFC
inline char* strToUpper(char* str)
{
char* pTemp = str;
long i;
long len = strlen(str);
long single_quotes = 0;
long double_quotes = 0;
for (i=0; i<len; i++)
{
switch(pTemp[i])
{
case '\'':
single_quotes++;
break;
case '\"':
double_quotes++;
break;
default:
if (single_quotes % 2 == 0 && double_quotes %2 == 0)
pTemp[i] = toupper(pTemp[i]);
break;
}
}
return(pTemp);
}
#define CEE_SUCCESS ((long) 0)
/*
// Linux port - ToDo
// Added dummy functions for transaction support (originally in pThreadsSync.cpp - we ar enot including that)
// Changing the method name (capitalize first letter) since SQL already has functions with same name results in a multiple definitions error
short BeginTransaction(long *transTag)
{
return 0;
}
short resumeTransaction(long transTag)
{
return 0;
}
short endTransaction(void)
{
return 0;
}
short abortTransaction(void)
{
return 0;
}
*/
#include "SrvrOthers.h"
#endif