src/odbc/rsodbc/rstrace.h (1,750 lines of code) (raw):
/*-------------------------------------------------------------------------
*
* Copyright(c) 2020, Amazon.com, Inc. or Its Affiliates. All rights reserved.
*
* Author: igarish
*-------------------------------------------------------------------------
*/
#pragma once
#include "rsodbc.h"
#include <aws/core/Aws.h>
#include <aws/core/utils/logging/AWSLogging.h>
#include <aws/core/utils/logging/LogMacros.h>
namespace AwsLogging = Aws::Utils::Logging;
// This Macros is a helper, used by member methods in RsTrace
#define WRITE_INTO_FILE(NEWLINE) \
int prev = buffer.size(); \
va_list args; \
va_start(args, fmt); \
va_list args_copy; \
va_copy(args_copy, args); \
const auto size = std::vsnprintf(nullptr, 0, fmt, args_copy) + 1; \
va_end(args_copy); \
buffer.resize(prev + size, ' '); \
vsnprintf(&buffer[prev], size, fmt, args); \
buffer.pop_back(); \
if (NEWLINE) { \
buffer.push_back('\n'); \
} \
va_end(args);
// This Macros is a helper, used by member methods in RsTrace
#define WRITE_INTO_FILE_WITH_ARG_LIST(NEWLINE, args) \
int prev = buffer.empty() ? 0 : buffer.size() - 1; \
va_list args_copy; \
va_copy(args_copy, args); \
const auto size = std::vsnprintf(nullptr, 0, fmt, args_copy) + 1; \
va_end(args_copy); \
buffer.resize(prev + size, ' '); \
vsnprintf(&buffer[prev], size, fmt, args);
#define FUNC_OFF -1
#define FUNC_CALL 0
#define FUNC_RETURN 1
#define TRACE_MAX_STR_VAL_LEN 1024
void createTraceFile();
void closeTraceFile();
FILE *getTraceFileHandle();
char *getTraceFileName();
/*
This class implements ODBC API call logging.
Throwout its lifetime, the object of this class
buffers all the necessary data sent to it.
The actual logging of the buffer is carried out during object destruction.
Use the class for small jobs, like API call start and end. This way, the logger
will have enough log likes with the help of which, it is possible to, for example,
measure (using logger's timestamp usually available in its log format)
lifetime of an API call consistently.
*/
class RsTrace {
private:
std::string buffer;
const char *TAG = "ODBCAPI";
int getLogLevel() {
// This logic should change in future if we support changing log level
// inflight
static int logLevel = getRsLoglevel();
return logLevel;
}
/*
Do not log if logger is OFF, or Logger is set to log only lower
level lines.
*/
virtual int logWhat(int iCallOrRet) {
/*
Note: condition "getRsLoglevel() < m_level" technically
covers "getRsLoglevel() == LOG_LEVEL_OFF" too but we keep it for
visibility.
*/
return (getLogLevel() >= LOG_LEVEL_DEBUG
? iCallOrRet
: FUNC_OFF);
}
public:
RsTrace() {}
~RsTrace() {}
void process() {
RS_LOG_DEBUG(TAG, buffer.c_str());
}
private:
void traceError(const char *fmt,...);
void traceAPICall(const char *fmt,...);
void traceArg(const char *fmt,...);
void traceArgVal(const char *fmt,...);
void traceDebugWithArgList(const char *fmt, va_list args);
void traceHandle(const char *pArgName, SQLHANDLE handle);
char *getRcString(SQLRETURN iRc);
void traceErrorList(SQLHENV phenv,SQLHDBC phdbc,SQLHSTMT phstmt,SQLHDESC phdesc);
void traceHandleType(SQLSMALLINT hHandleType);
void traceClosingBracket();
void traceStrValWithSmallLen(const char *pArgName, const char *pVal, SQLSMALLINT cbLen);
void traceStrValWithLargeLen(const char *pArgName, const char *pVal, SQLINTEGER cbLen);
void traceWStrValWithSmallLen(const char *pArgName, SQLWCHAR *pwVal, SQLSMALLINT cchLen);
void traceWStrValWithLargeLen(const char *pArgName, SQLWCHAR *pwVal, SQLINTEGER cchLen);
void traceStrSmallLen(const char *pArgName, SQLSMALLINT cbLen);
void traceStrLargeLen(const char *pArgName, SQLINTEGER cbLen);
void tracePointer(const char *var, void *ptr);
void traceStrOutSmallLen(const char *pArgName, SQLSMALLINT *pcbLen);
void traceStrOutLargeLen(const char *pArgName, SQLINTEGER *pcbLen);
void traceIntPtrVal(const char *pArgName, int *piVal);
void traceLongPtrVal(const char *pArgName, long *plVal);
void traceShortPtrVal(const char *pArgName, short *phVal);
void traceLongLongPtrVal(const char *pArgName, long long*pllVal);
void traceFloatPtrVal(const char *pArgName, float *pfVal);
void traceDoublePtrVal(const char *pArgName, double *pdVal);
void traceBitPtrVal(const char *pArgName, char *pbVal);
void traceIntVal(const char *pArgName,int iVal);
void traceLongVal(const char *pArgName,long lVal);
void traceShortVal(const char *pArgName,short hVal);
void traceFloatVal(const char *pArgName,float fVal);
void traceDoubleVal(const char *pArgName,double dVal);
void traceLongLongVal(const char *pArgName,long long llVal);
void traceBitVal(const char *pArgName,char bVal);
void traceDatePtrVal(const char *pArgName, DATE_STRUCT *pdtVal);
void traceTimeStampPtrVal(const char *pArgName, TIMESTAMP_STRUCT *ptsVal);
void traceTimePtrVal(const char *pArgName, TIME_STRUCT *ptVal);
void traceNumericPtrVal(const char *pArgName, SQL_NUMERIC_STRUCT *pnVal);
void traceDiagIdentifier(SQLSMALLINT hDiagIdentifier);
void traceDiagIdentifierOutput(SQLSMALLINT hDiagIdentifier,
SQLPOINTER pDiagInfo,
SQLSMALLINT cbLen,
int iUnicode);
void traceGetInfoType(SQLUSMALLINT hInfoType);
void traceGetInfoOutput(SQLUSMALLINT hInfoType,
SQLPOINTER pInfoValue,
SQLSMALLINT cbLen,
int iUnicode);
void traceBulkOperationOption(SQLSMALLINT hOperation);
void traceCType(const char *pArgName, SQLSMALLINT hCType);
void traceSQLType(const char *pArgName,SQLSMALLINT hSQLType);
void traceNullableOutput(const char *pArgName,SQLSMALLINT *pNullable);
void traceFieldIdentifier(const char *pArgName, SQLUSMALLINT hFieldIdentifier);
void traceEnvAttr(const char *pArgName, SQLINTEGER iAttribute);
void traceEnvAttrVal(const char *pArgName, SQLINTEGER iAttribute,SQLPOINTER pVal, SQLINTEGER cbLen);
void traceConnectAttr(const char *pArgName, SQLINTEGER iAttribute);
void traceConnectAttrVal(const char *pArgName, SQLINTEGER iAttribute,SQLPOINTER pVal, SQLINTEGER cbLen, int iUnicode, int iSetVal);
void traceStmtAttr(const char *pArgName, SQLINTEGER iAttribute);
void traceStmtAttrVal(const char *pArgName, SQLINTEGER iAttribute,SQLPOINTER pVal, SQLINTEGER cbLen, int iUnicode, int iSetVal);
void traceDriverCompletion(const char *pArgName, SQLUSMALLINT hDriverCompletion);
void traceIdenTypeSpecialColumns(const char *pArgName, SQLUSMALLINT hIdenType);
void traceScopeSpecialColumns(const char *pArgName, SQLUSMALLINT hScope);
void traceUniqueStatistics(const char *pArgName, SQLUSMALLINT hUnique);
void traceReservedStatistics(const char *pArgName, SQLUSMALLINT hReserved);
void traceData(const char *pArgName, SQLSMALLINT hType, SQLPOINTER pValue, SQLLEN cbLen);
void tracePasswordConnectString(char *var,char *szConnStr, SQLSMALLINT cbConnStr);
void tracePasswordConnectStringW(char *var,SQLWCHAR *wszConnStr, SQLSMALLINT cchConnStr);
public:
void TraceSQLAllocEnv(int iCallOrRet,
SQLRETURN iRc,
SQLHENV *pphenv);
void TraceSQLAllocConnect(int iCallOrRet,
SQLRETURN iRc,
HENV phenv,
HDBC *pphdbc);
void TraceSQLAllocStmt(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLHSTMT *pphstmt);
void TraceSQLFreeEnv(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv);
void TraceSQLFreeConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc);
void TraceSQLFreeStmt(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT uhOption);
void TraceSQLAllocHandle(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pInputHandle,
SQLHANDLE *ppOutputHandle);
void TraceSQLFreeHandle(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle);
void TraceSQLConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLCHAR *szDSN,
SQLSMALLINT cchDSN,
SQLCHAR *szUID,
SQLSMALLINT cchUID,
SQLCHAR *szAuthStr,
SQLSMALLINT cchAuthStr);
void TraceSQLDisconnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc);
void TraceSQLDriverConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLHWND hwnd,
SQLCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOut,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT hDriverCompletion);
void TraceSQLBrowseConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOut,
SQLSMALLINT *pcbConnStrOut);
void TraceSQLError(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLHDBC phdbc,
SQLHSTMT phstmt,
SQLCHAR *pSqlstate,
SQLINTEGER *pNativeError,
SQLCHAR *pMessageText,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLGetDiagRec(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLCHAR *pSqlstate,
SQLINTEGER *piNativeError,
SQLCHAR *pMessageText,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLGetDiagField(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLSMALLINT hDiagIdentifier,
SQLPOINTER pDiagInfo,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLTransact(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLHDBC phdbc,
SQLUSMALLINT hCompletionType);
void TraceSQLEndTran(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hCompletionType);
void TraceSQLGetInfo(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hInfoType,
SQLPOINTER pInfoValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLGetFunctions(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT uhFunctionId,
SQLUSMALLINT *puhSupported);
void TraceSQLExecDirect(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR* pCmd,
SQLINTEGER cbLen);
void TraceSQLExecute(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLPrepare(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR* pCmd,
SQLINTEGER cbLen);
void TraceSQLCancel(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLParamData(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLPOINTER *ppValue);
void TraceSQLPutData(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLPOINTER pData,
SQLLEN cbLen);
void TraceSQLBulkOperations(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT hOperation);
void TraceSQLNativeSql(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLCHAR* szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLCHAR* szSqlStrOut,
SQLINTEGER cbSqlStrOut,
SQLINTEGER *pcbSqlStrOut);
void TraceSQLSetCursorName(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR* pCursorName,
SQLSMALLINT cbLen);
void TraceSQLGetCursorName(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCursorName,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLCloseCursor(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLBindParameter(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT hInOutType,
SQLSMALLINT hType,
SQLSMALLINT hSQLType,
SQLULEN iColSize,
SQLSMALLINT hScale,
SQLPOINTER pValue,
SQLLEN cbLen,
SQLLEN *pcbLenInd);
void TraceSQLSetParam(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT hValType,
SQLSMALLINT hParamType,
SQLULEN iLengthPrecision,
SQLSMALLINT hParamScale,
SQLPOINTER pParamVal,
SQLLEN *piStrLen_or_Ind);
void TraceSQLBindParam(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT hValType,
SQLSMALLINT hParamType,
SQLULEN iLengthPrecision,
SQLSMALLINT hParamScale,
SQLPOINTER pParamVal,
SQLLEN *piStrLen_or_Ind);
void TraceSQLNumParams(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT *pParamCount);
void TraceSQLParamOptions(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLULEN iCrow,
SQLULEN *piRow);
void TraceSQLDescribeParam(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT *pDataType,
SQLULEN *pParamSize,
SQLSMALLINT *pDecimalDigits,
SQLSMALLINT *pNullable);
void TraceSQLNumResultCols(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT *pColumnCount);
void TraceSQLDescribeCol(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLCHAR *pColName,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLSMALLINT *pDataType,
SQLULEN *pColSize,
SQLSMALLINT *pDecimalDigits,
SQLSMALLINT *pNullable);
void TraceSQLColAttribute(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pcValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLColAttributes(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pcValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLBindCol(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLSMALLINT hType,
SQLPOINTER pValue,
SQLLEN cbLen,
SQLLEN *pcbLenInd);
void TraceSQLFetch(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLMoreResults(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLExtendedFetch(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hFetchOrientation,
SQLLEN iFetchOffset,
SQLULEN *piRowCount,
SQLUSMALLINT *phRowStatus);
void TraceSQLGetData(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLSMALLINT hType,
SQLPOINTER pValue,
SQLLEN cbLen,
SQLLEN *pcbLenInd);
void TraceSQLRowCount(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLLEN* pRowCount);
void TraceSQLSetPos(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSETPOSIROW iRow,
SQLUSMALLINT hOperation,
SQLUSMALLINT hLockType);
void TraceSQLFetchScroll(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT hstmt,
SQLSMALLINT FetchOrientation,
SQLLEN FetchOffset);
void TraceSQLCopyDesc(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdescSrc,
SQLHDESC phdescDest);
void TraceSQLGetDescField(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetDescRec(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLCHAR *pName,
SQLSMALLINT cbName,
SQLSMALLINT *pcbName,
SQLSMALLINT *phType,
SQLSMALLINT *phSubType,
SQLLEN *plOctetLength,
SQLSMALLINT *phPrecision,
SQLSMALLINT *phScale,
SQLSMALLINT *phNullable);
void TraceSQLSetDescField(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLSetDescRec(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hType,
SQLSMALLINT hSubType,
SQLLEN iOctetLength,
SQLSMALLINT hPrecision,
SQLSMALLINT hScale,
SQLPOINTER pData,
SQLLEN * plStrLen,
SQLLEN * plIndicator);
void TraceSQLSetConnectOption(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLULEN pValue);
void TraceSQLGetConnectOption(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLPOINTER pValue);
void TraceSQLSetStmtOption(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hOption,
SQLULEN pValue);
void TraceSQLGetStmtOption(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hOption,
SQLPOINTER pValue);
void TraceSQLSetScrollOptions(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hConcurrency,
SQLLEN iKeysetSize,
SQLUSMALLINT hRowsetSize);
void TraceSQLGetConnectAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetStmtAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLSetConnectAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLSetStmtAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLSetEnvAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLGetEnvAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLTables(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLCHAR *pTableType,
SQLSMALLINT cbTableType);
void TraceSQLColumns(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLCHAR *pColumnName,
SQLSMALLINT cbColumnName);
void TraceSQLStatistics(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT hUnique,
SQLUSMALLINT hReserved);
void TraceSQLSpecialColumns(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hIdenType,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT hScope,
SQLUSMALLINT hNullable);
void TraceSQLProcedureColumns(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pProcName,
SQLSMALLINT cbProcName,
SQLCHAR *pColumnName,
SQLSMALLINT cbColumnName);
void TraceSQLProcedures(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pProcName,
SQLSMALLINT cbProcName);
void TraceSQLForeignKeys(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLCHAR *pPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLCHAR *pPkTableName,
SQLSMALLINT cbPkTableName,
SQLCHAR *pFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLCHAR *pFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLCHAR *pFkTableName,
SQLSMALLINT cbFkTableName);
void TraceSQLPrimaryKeys(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName);
void TraceSQLGetTypeInfo(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT hType);
void TraceSQLColumnPrivileges(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLCHAR *pColumnName,
SQLSMALLINT cbColumnName);
void TraceSQLTablePrivileges(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName);
void TraceSQLConnectW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLWCHAR* wszDSN,
SQLSMALLINT cchDSN,
SQLWCHAR* wszUID,
SQLSMALLINT cchUID,
SQLWCHAR* wszAuthStr,
SQLSMALLINT cchAuthStr);
void TraceSQLDriverConnectW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLHWND hwnd,
SQLWCHAR* wszConnStrIn,
SQLSMALLINT cchConnStrIn,
SQLWCHAR* wszConnStrOut,
SQLSMALLINT cchConnStrOut,
SQLSMALLINT* pcchConnStrOut,
SQLUSMALLINT hDriverCompletion);
void TraceSQLBrowseConnectW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLWCHAR* wszConnStrIn,
SQLSMALLINT cchConnStrIn,
SQLWCHAR* wszConnStrOut,
SQLSMALLINT cchConnStrOut,
SQLSMALLINT* pcchConnStrOut);
void TraceSQLGetInfoW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hInfoType,
SQLPOINTER pwInfoValue,
SQLSMALLINT cbLen,
SQLSMALLINT* pcbLen);
void TraceSQLErrorW(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLHDBC phdbc,
SQLHSTMT phstmt,
SQLWCHAR* pwSqlState,
SQLINTEGER* piNativeError,
SQLWCHAR* pwMessageText,
SQLSMALLINT cchLen,
SQLSMALLINT* pcchLen);
void TraceSQLGetDiagRecW(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLWCHAR *pwSqlState,
SQLINTEGER *piNativeError,
SQLWCHAR *pwMessageText,
SQLSMALLINT cchLen,
SQLSMALLINT *pcchLen);
void TraceSQLGetDiagFieldW(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLSMALLINT hDiagIdentifier,
SQLPOINTER pwDiagInfo,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLExecDirectW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCmd,
SQLINTEGER cchLen);
void TraceSQLNativeSqlW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLWCHAR* wszSqlStrIn,
SQLINTEGER cchSqlStrIn,
SQLWCHAR* wszSqlStrOut,
SQLINTEGER cchSqlStrOut,
SQLINTEGER* pcchSqlStrOut);
void TraceSQLGetConnectAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetConnectOptionW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLPOINTER pwValue);
void TraceSQLGetStmtAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLSetConnectAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen);
void TraceSQLSetConnectOptionW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLULEN pwValue);
void TraceSQLSetStmtAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen);
void TraceSQLGetCursorNameW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCursorName,
SQLSMALLINT cchLen,
SQLSMALLINT* pcchLen);
void TraceSQLPrepareW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCmd,
SQLINTEGER cchLen);
void TraceSQLSetCursorNameW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCursorName,
SQLSMALLINT cchLen);
void TraceSQLColAttributesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLColAttributeW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLDescribeColW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLWCHAR* pwColName,
SQLSMALLINT cchLen,
SQLSMALLINT* pcchLen,
SQLSMALLINT* pDataType,
SQLULEN* pColSize,
SQLSMALLINT* pDecimalDigits,
SQLSMALLINT* pNullable);
void TraceSQLGetDescFieldW(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetDescRecW(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLWCHAR* pwName,
SQLSMALLINT cchName,
SQLSMALLINT *pcchName,
SQLSMALLINT *phType,
SQLSMALLINT *phSubType,
SQLLEN *plOctetLength,
SQLSMALLINT *phPrecision,
SQLSMALLINT *phScale,
SQLSMALLINT *phNullable);
void TraceSQLSetDescFieldW(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLINTEGER cbLen);
void TraceSQLColumnPrivilegesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLWCHAR* pwColumnName,
SQLSMALLINT cchColumnName);
void TraceSQLColumnsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLWCHAR* pwColumnName,
SQLSMALLINT cchColumnName);
void TraceSQLForeignKeysW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwPkCatalogName,
SQLSMALLINT cchPkCatalogName,
SQLWCHAR* pwPkSchemaName,
SQLSMALLINT cchPkSchemaName,
SQLWCHAR* pwPkTableName,
SQLSMALLINT cchPkTableName,
SQLWCHAR* pwFkCatalogName,
SQLSMALLINT cchFkCatalogName,
SQLWCHAR* pwFkSchemaName,
SQLSMALLINT cchFkSchemaName,
SQLWCHAR* pwFkTableName,
SQLSMALLINT cchFkTableName);
void TraceSQLGetTypeInfoW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT hType);
void TraceSQLPrimaryKeysW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName);
void TraceSQLProcedureColumnsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwProcName,
SQLSMALLINT cchProcName,
SQLWCHAR* pwColumnName,
SQLSMALLINT cchColumnName);
void TraceSQLProceduresW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwProcName,
SQLSMALLINT cchProcName);
void TraceSQLSpecialColumnsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hIdenType,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLUSMALLINT hScope,
SQLUSMALLINT hNullable);
void TraceSQLStatisticsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLUSMALLINT hUnique,
SQLUSMALLINT hReserved);
void TraceSQLTablePrivilegesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName);
void TraceSQLTablesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLWCHAR* pwTableType,
SQLSMALLINT cchTableType);
};
class RsTraceNoop : public RsTrace {
public:
virtual int getLogLevel() {
return LOG_LEVEL_OFF;
}
virtual int logWhat(int iCallOrRet) {
return FUNC_OFF;
}
};
void TraceSQLAllocEnv(int iCallOrRet,
SQLRETURN iRc,
SQLHENV *pphenv);
void TraceSQLAllocConnect(int iCallOrRet,
SQLRETURN iRc,
HENV phenv,
HDBC *pphdbc);
void TraceSQLAllocStmt(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLHSTMT *pphstmt);
void TraceSQLFreeEnv(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv);
void TraceSQLFreeConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc);
void TraceSQLFreeStmt(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT uhOption);
void TraceSQLAllocHandle(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pInputHandle,
SQLHANDLE *ppOutputHandle);
void TraceSQLFreeHandle(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle);
void TraceSQLConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLCHAR *szDSN,
SQLSMALLINT cchDSN,
SQLCHAR *szUID,
SQLSMALLINT cchUID,
SQLCHAR *szAuthStr,
SQLSMALLINT cchAuthStr);
void TraceSQLDisconnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc);
void TraceSQLDriverConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLHWND hwnd,
SQLCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOut,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT hDriverCompletion);
void TraceSQLBrowseConnect(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOut,
SQLSMALLINT *pcbConnStrOut);
void TraceSQLError(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLHDBC phdbc,
SQLHSTMT phstmt,
SQLCHAR *pSqlstate,
SQLINTEGER *pNativeError,
SQLCHAR *pMessageText,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLGetDiagRec(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLCHAR *pSqlstate,
SQLINTEGER *piNativeError,
SQLCHAR *pMessageText,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLGetDiagField(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLSMALLINT hDiagIdentifier,
SQLPOINTER pDiagInfo,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLTransact(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLHDBC phdbc,
SQLUSMALLINT hCompletionType);
void TraceSQLEndTran(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hCompletionType);
void TraceSQLGetInfo(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hInfoType,
SQLPOINTER pInfoValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLGetFunctions(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT uhFunctionId,
SQLUSMALLINT *puhSupported);
void TraceSQLExecDirect(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR* pCmd,
SQLINTEGER cbLen);
void TraceSQLExecute(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLPrepare(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR* pCmd,
SQLINTEGER cbLen);
void TraceSQLCancel(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLParamData(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLPOINTER *ppValue);
void TraceSQLPutData(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLPOINTER pData,
SQLLEN cbLen);
void TraceSQLBulkOperations(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT hOperation);
void TraceSQLNativeSql(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLCHAR* szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLCHAR* szSqlStrOut,
SQLINTEGER cbSqlStrOut,
SQLINTEGER *pcbSqlStrOut);
void TraceSQLSetCursorName(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR* pCursorName,
SQLSMALLINT cbLen);
void TraceSQLGetCursorName(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCursorName,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLCloseCursor(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLBindParameter(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT hInOutType,
SQLSMALLINT hType,
SQLSMALLINT hSQLType,
SQLULEN iColSize,
SQLSMALLINT hScale,
SQLPOINTER pValue,
SQLLEN cbLen,
SQLLEN *pcbLenInd);
void TraceSQLSetParam(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT hValType,
SQLSMALLINT hParamType,
SQLULEN iLengthPrecision,
SQLSMALLINT hParamScale,
SQLPOINTER pParamVal,
SQLLEN *piStrLen_or_Ind);
void TraceSQLBindParam(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT hValType,
SQLSMALLINT hParamType,
SQLULEN iLengthPrecision,
SQLSMALLINT hParamScale,
SQLPOINTER pParamVal,
SQLLEN *piStrLen_or_Ind);
void TraceSQLNumParams(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT *pParamCount);
void TraceSQLParamOptions(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLULEN iCrow,
SQLULEN *piRow);
void TraceSQLDescribeParam(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hParam,
SQLSMALLINT *pDataType,
SQLULEN *pParamSize,
SQLSMALLINT *pDecimalDigits,
SQLSMALLINT *pNullable);
void TraceSQLNumResultCols(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT *pColumnCount);
void TraceSQLDescribeCol(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLCHAR *pColName,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLSMALLINT *pDataType,
SQLULEN *pColSize,
SQLSMALLINT *pDecimalDigits,
SQLSMALLINT *pNullable);
void TraceSQLColAttribute(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pcValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLColAttributes(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pcValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLBindCol(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLSMALLINT hType,
SQLPOINTER pValue,
SQLLEN cbLen,
SQLLEN *pcbLenInd);
void TraceSQLFetch(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLMoreResults(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt);
void TraceSQLExtendedFetch(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hFetchOrientation,
SQLLEN iFetchOffset,
SQLULEN *piRowCount,
SQLUSMALLINT *phRowStatus);
void TraceSQLGetData(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLSMALLINT hType,
SQLPOINTER pValue,
SQLLEN cbLen,
SQLLEN *pcbLenInd);
void TraceSQLRowCount(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLLEN* pRowCount);
void TraceSQLSetPos(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSETPOSIROW iRow,
SQLUSMALLINT hOperation,
SQLUSMALLINT hLockType);
void TraceSQLFetchScroll(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT hstmt,
SQLSMALLINT FetchOrientation,
SQLLEN FetchOffset);
void TraceSQLCopyDesc(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdescSrc,
SQLHDESC phdescDest);
void TraceSQLGetDescField(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetDescRec(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLCHAR *pName,
SQLSMALLINT cbName,
SQLSMALLINT *pcbName,
SQLSMALLINT *phType,
SQLSMALLINT *phSubType,
SQLLEN *plOctetLength,
SQLSMALLINT *phPrecision,
SQLSMALLINT *phScale,
SQLSMALLINT *phNullable);
void TraceSQLSetDescField(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLSetDescRec(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hType,
SQLSMALLINT hSubType,
SQLLEN iOctetLength,
SQLSMALLINT hPrecision,
SQLSMALLINT hScale,
SQLPOINTER pData,
SQLLEN * plStrLen,
SQLLEN * plIndicator);
void TraceSQLSetConnectOption(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLULEN pValue);
void TraceSQLGetConnectOption(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLPOINTER pValue);
void TraceSQLSetStmtOption(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hOption,
SQLULEN pValue);
void TraceSQLGetStmtOption(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hOption,
SQLPOINTER pValue);
void TraceSQLSetScrollOptions(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hConcurrency,
SQLLEN iKeysetSize,
SQLUSMALLINT hRowsetSize);
void TraceSQLGetConnectAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetStmtAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLSetConnectAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLSetStmtAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLSetEnvAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen);
void TraceSQLGetEnvAttr(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLINTEGER iAttribute,
SQLPOINTER pValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLTables(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLCHAR *pTableType,
SQLSMALLINT cbTableType);
void TraceSQLColumns(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLCHAR *pColumnName,
SQLSMALLINT cbColumnName);
void TraceSQLStatistics(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT hUnique,
SQLUSMALLINT hReserved);
void TraceSQLSpecialColumns(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hIdenType,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT hScope,
SQLUSMALLINT hNullable);
void TraceSQLProcedureColumns(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pProcName,
SQLSMALLINT cbProcName,
SQLCHAR *pColumnName,
SQLSMALLINT cbColumnName);
void TraceSQLProcedures(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pProcName,
SQLSMALLINT cbProcName);
void TraceSQLForeignKeys(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLCHAR *pPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLCHAR *pPkTableName,
SQLSMALLINT cbPkTableName,
SQLCHAR *pFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLCHAR *pFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLCHAR *pFkTableName,
SQLSMALLINT cbFkTableName);
void TraceSQLPrimaryKeys(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName);
void TraceSQLGetTypeInfo(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT hType);
void TraceSQLColumnPrivileges(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName,
SQLCHAR *pColumnName,
SQLSMALLINT cbColumnName);
void TraceSQLTablePrivileges(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLCHAR *pCatalogName,
SQLSMALLINT cbCatalogName,
SQLCHAR *pSchemaName,
SQLSMALLINT cbSchemaName,
SQLCHAR *pTableName,
SQLSMALLINT cbTableName);
void TraceSQLConnectW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLWCHAR* wszDSN,
SQLSMALLINT cchDSN,
SQLWCHAR* wszUID,
SQLSMALLINT cchUID,
SQLWCHAR* wszAuthStr,
SQLSMALLINT cchAuthStr);
void TraceSQLDriverConnectW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLHWND hwnd,
SQLWCHAR* wszConnStrIn,
SQLSMALLINT cchConnStrIn,
SQLWCHAR* wszConnStrOut,
SQLSMALLINT cchConnStrOut,
SQLSMALLINT* pcchConnStrOut,
SQLUSMALLINT hDriverCompletion);
void TraceSQLBrowseConnectW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLWCHAR* wszConnStrIn,
SQLSMALLINT cchConnStrIn,
SQLWCHAR* wszConnStrOut,
SQLSMALLINT cchConnStrOut,
SQLSMALLINT* pcchConnStrOut);
void TraceSQLGetInfoW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hInfoType,
SQLPOINTER pwInfoValue,
SQLSMALLINT cbLen,
SQLSMALLINT* pcbLen);
void TraceSQLErrorW(int iCallOrRet,
SQLRETURN iRc,
SQLHENV phenv,
SQLHDBC phdbc,
SQLHSTMT phstmt,
SQLWCHAR* pwSqlState,
SQLINTEGER* piNativeError,
SQLWCHAR* pwMessageText,
SQLSMALLINT cchLen,
SQLSMALLINT* pcchLen);
void TraceSQLGetDiagRecW(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLWCHAR *pwSqlState,
SQLINTEGER *piNativeError,
SQLWCHAR *pwMessageText,
SQLSMALLINT cchLen,
SQLSMALLINT *pcchLen);
void TraceSQLGetDiagFieldW(int iCallOrRet,
SQLRETURN iRc,
SQLSMALLINT hHandleType,
SQLHANDLE pHandle,
SQLSMALLINT hRecNumber,
SQLSMALLINT hDiagIdentifier,
SQLPOINTER pwDiagInfo,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen);
void TraceSQLExecDirectW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCmd,
SQLINTEGER cchLen);
void TraceSQLNativeSqlW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLWCHAR* wszSqlStrIn,
SQLINTEGER cchSqlStrIn,
SQLWCHAR* wszSqlStrOut,
SQLINTEGER cchSqlStrOut,
SQLINTEGER* pcchSqlStrOut);
void TraceSQLGetConnectAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetConnectOptionW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLPOINTER pwValue);
void TraceSQLGetStmtAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLSetConnectAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen);
void TraceSQLSetConnectOptionW(int iCallOrRet,
SQLRETURN iRc,
SQLHDBC phdbc,
SQLUSMALLINT hOption,
SQLULEN pwValue);
void TraceSQLSetStmtAttrW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLINTEGER iAttribute,
SQLPOINTER pwValue,
SQLINTEGER cbLen);
void TraceSQLGetCursorNameW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCursorName,
SQLSMALLINT cchLen,
SQLSMALLINT* pcchLen);
void TraceSQLPrepareW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCmd,
SQLINTEGER cchLen);
void TraceSQLSetCursorNameW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCursorName,
SQLSMALLINT cchLen);
void TraceSQLColAttributesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLColAttributeW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLUSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLSMALLINT cbLen,
SQLSMALLINT *pcbLen,
SQLLEN *plValue);
void TraceSQLDescribeColW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hCol,
SQLWCHAR* pwColName,
SQLSMALLINT cchLen,
SQLSMALLINT* pcchLen,
SQLSMALLINT* pDataType,
SQLULEN* pColSize,
SQLSMALLINT* pDecimalDigits,
SQLSMALLINT* pNullable);
void TraceSQLGetDescFieldW(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLINTEGER cbLen,
SQLINTEGER *pcbLen);
void TraceSQLGetDescRecW(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLWCHAR* pwName,
SQLSMALLINT cchName,
SQLSMALLINT *pcchName,
SQLSMALLINT *phType,
SQLSMALLINT *phSubType,
SQLLEN *plOctetLength,
SQLSMALLINT *phPrecision,
SQLSMALLINT *phScale,
SQLSMALLINT *phNullable);
void TraceSQLSetDescFieldW(int iCallOrRet,
SQLRETURN iRc,
SQLHDESC phdesc,
SQLSMALLINT hRecNumber,
SQLSMALLINT hFieldIdentifier,
SQLPOINTER pwValue,
SQLINTEGER cbLen);
void TraceSQLColumnPrivilegesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLWCHAR* pwColumnName,
SQLSMALLINT cchColumnName);
void TraceSQLColumnsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLWCHAR* pwColumnName,
SQLSMALLINT cchColumnName);
void TraceSQLForeignKeysW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwPkCatalogName,
SQLSMALLINT cchPkCatalogName,
SQLWCHAR* pwPkSchemaName,
SQLSMALLINT cchPkSchemaName,
SQLWCHAR* pwPkTableName,
SQLSMALLINT cchPkTableName,
SQLWCHAR* pwFkCatalogName,
SQLSMALLINT cchFkCatalogName,
SQLWCHAR* pwFkSchemaName,
SQLSMALLINT cchFkSchemaName,
SQLWCHAR* pwFkTableName,
SQLSMALLINT cchFkTableName);
void TraceSQLGetTypeInfoW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLSMALLINT hType);
void TraceSQLPrimaryKeysW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName);
void TraceSQLProcedureColumnsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwProcName,
SQLSMALLINT cchProcName,
SQLWCHAR* pwColumnName,
SQLSMALLINT cchColumnName);
void TraceSQLProceduresW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwProcName,
SQLSMALLINT cchProcName);
void TraceSQLSpecialColumnsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLUSMALLINT hIdenType,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLUSMALLINT hScope,
SQLUSMALLINT hNullable);
void TraceSQLStatisticsW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLUSMALLINT hUnique,
SQLUSMALLINT hReserved);
void TraceSQLTablePrivilegesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName);
void TraceSQLTablesW(int iCallOrRet,
SQLRETURN iRc,
SQLHSTMT phstmt,
SQLWCHAR* pwCatalogName,
SQLSMALLINT cchCatalogName,
SQLWCHAR* pwSchemaName,
SQLSMALLINT cchSchemaName,
SQLWCHAR* pwTableName,
SQLSMALLINT cchTableName,
SQLWCHAR* pwTableType,
SQLSMALLINT cchTableType);