SQLRETURN _SQLPrimaryKeys( SQLHSTMT hDrvStmt, SQLCHAR *szCatalogName, SQLSMALLINT nCatalogNameLength, SQLCHAR *szSchemaName, SQLSMALLINT nSchemaNameLength, SQLCHAR *szTableName, SQLSMALLINT nTableNameLength ) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "_SQLPrimaryKeys" #endif HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", (long)hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * todo: REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN SQLGetConnectAttr( SQLHDBC hDrvDbc, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER BufferLength, SQLINTEGER *StringLength ) { HDRVDBC hDbc = (HDRVDBC)hDrvDbc; /* SANITY CHECKS */ if( NULL == hDbc ) return SQL_INVALID_HANDLE; sprintf((char*) hDbc->szSqlMsg, "hDbc = $%08lX", (long)hDbc ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hDbc->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLBindParameter( SQLHSTMT hDrvStmt, SQLUSMALLINT nParameterNumber, SQLSMALLINT nIOType, SQLSMALLINT nBufferType, SQLSMALLINT nParamType, SQLULEN nParamLength, SQLSMALLINT nScale, SQLPOINTER pData, SQLLEN nBufferLength, SQLLEN *pnLengthOrIndicator ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt=$%08lX nParameterNumber=%d nIOType=%d nBufferType=%d nParamType=%d nParamLength=%d nScale=%d pData=$%08lX nBufferLength=%d *pnLengthOrIndicator=$%08lX",hStmt,nParameterNumber,nIOType,nBufferType,nParamType,nParamLength,nScale,pData,nBufferLength, *pnLengthOrIndicator ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not currently supported" ); return SQL_ERROR; }
SQLRETURN SQLProcedures( SQLHSTMT hDrvStmt, SQLCHAR *szCatalogName, SQLSMALLINT nCatalogNameLength, SQLCHAR *szSchemaName, SQLSMALLINT nSchemaNameLength, SQLCHAR *szProcName, SQLSMALLINT nProcNameLength ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = %p", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLExecDirect( SQLHSTMT hDrvStmt, SQLCHAR *szSqlStr, SQLINTEGER nSqlStr ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; RETCODE rc; /* SANITY CHECKS */ if( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf( hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hStmt->szSqlMsg ); /* prepare command */ rc = _Prepare( hDrvStmt, szSqlStr, nSqlStr ); if ( SQL_SUCCESS != rc ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "Could not prepare statement" ); return rc; } /* execute command */ rc = _Execute( hDrvStmt ); if ( SQL_SUCCESS != rc ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "Problem calling SQLEXecute" ); return rc; } logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; }
SQLRETURN SQLColumnPrivileges( SQLHSTMT hDrvStmt, SQLCHAR *szCatalogName, SQLSMALLINT nCatalogNameLength, SQLCHAR *szSchemaName, SQLSMALLINT nSchemaNameLength, SQLCHAR *szTableName, SQLSMALLINT nTableNameLength, SQLCHAR *szColumnName, SQLSMALLINT nColumnNameLength ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf( hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLTransact( SQLHENV hDrvEnv, SQLHDBC hDrvDbc, UWORD nType) { HDRVENV hEnv = (HDRVENV)hDrvEnv; HDRVDBC hDbc = (HDRVDBC)hDrvDbc; /* SANITY CHECKS */ if ( hEnv == SQL_NULL_HENV ) return SQL_INVALID_HANDLE; sprintf( hEnv->szSqlMsg, "hEnv = $%08lX", hEnv ); logPushMsg( hEnv->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hEnv->szSqlMsg ); switch ( nType ) { case SQL_COMMIT: break; case SQL_ROLLBACK: break; default: sprintf( hEnv->szSqlMsg, "SQL_ERROR Invalid nType=%d", nType ); logPushMsg( hEnv->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hEnv->szSqlMsg ); return SQL_ERROR; } logPushMsg( hEnv->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Function not supported" ); return SQL_ERROR; }
SQLRETURN _SQLSetStmtOption( SQLHSTMT hDrvStmt, UWORD fOption, SQLULEN vParam) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "_SQLSetStmtOption" #endif HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", (long)hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * todo: REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN SQLSetParam(SQLHSTMT hDrvStmt, SQLUSMALLINT nPar, SQLSMALLINT nType, SQLSMALLINT nSqlType, SQLULEN nColDef, SQLSMALLINT nScale, SQLPOINTER pValue, SQLLEN *pnValue) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = %p", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); if ( !hStmt->pszQuery ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR No prepared statement to work with" ); return SQL_ERROR; } /****************** * 1. Your param storage is in hStmt->hStmtExtras * so you will have to code for it. Do it here. ******************/ /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
/* THIS IS CORRECT... SQLRETURN SQLSpecialColumns( SQLHSTMT hDrvStmt, SQLSMALLINT nColumnType, SQLCHAR *szCatalogName, SQLSMALLINT nCatalogNameLength, SQLCHAR *szSchemaName, SQLSMALLINT nSchemaNameLength, SQLCHAR *szTableName, SQLSMALLINT nTableNameLength, SQLSMALLINT nScope, SQLSMALLINT nNullable ) THIS WORKS... */ SQLRETURN SQLSpecialColumns( SQLHSTMT hDrvStmt, UWORD nColumnType, UCHAR *szCatalogName, SWORD nCatalogNameLength, UCHAR *szSchemaName, SWORD nSchemaNameLength, UCHAR *szTableName, SWORD nTableNameLength, UWORD nScope, UWORD nNullable ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN sqlFreeConnect( SQLHDBC hDrvDbc ) { HDRVDBC hDbc = (HDRVDBC)hDrvDbc; int nReturn; /* SANITY CHECKS */ if( NULL == hDbc ) return SQL_INVALID_HANDLE; sprintf( hDbc->szSqlMsg, "hDbc = $%08lX", hDbc ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); if( hDbc->hDbcExtras->hServer > -1 ) { logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Connection is active" ); return SQL_ERROR; } if ( hDbc->hFirstStmt != NULL ) { logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Connection has allocated statements" ); return SQL_ERROR; } nReturn = _FreeDbc( hDbc ); return nReturn; }
SQLRETURN SQLRowCount( SQLHSTMT hDrvStmt, SQLLEN *pnRowCount) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "SQLRowCount" #endif SQLRETURN r; /************************ * SANITY CHECKS ************************/ if( NULL == hDrvStmt ) return SQL_INVALID_HANDLE; /* LOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_lock( &((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->mutex, ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->nMutexTimeout ) ) { logPushMsg( ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR mutex lock failed" ); return SQL_ERROR; } /* DOIT */ r = _SQLRowCount( hDrvStmt, pnRowCount ); /* UNLOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_unlock( &((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->mutex) ) { logPushMsg( ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hLog, __FILE__, __FUNC__, __LINE__, LOG_ERROR, LOG_ERROR, "SQL_ERROR mutex unlock failed" ); return SQL_ERROR; } return r; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN _SQLRowCount( SQLHSTMT hDrvStmt, SQLLEN *pnRowCount) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "_SQLRowCount" #endif HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", (long)hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); if ( NULL == pnRowCount ) { logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR pnRowCount can not be NULL" ); return SQL_ERROR; } *pnRowCount = hStmt->hStmtExtras->nRows; logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN sqlFreeEnv( SQLHENV hDrvEnv ) { HDRVENV hEnv = (HDRVENV)hDrvEnv; /* SANITY CHECKS */ if( hEnv == SQL_NULL_HENV ) return SQL_INVALID_HANDLE; sprintf( hEnv->szSqlMsg, "hEnv = $%08lX", hEnv ); logPushMsg( hEnv->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hEnv->szSqlMsg ); if ( hEnv->hFirstDbc != NULL ) { logPushMsg( hEnv->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR There are allocated Connections" ); return SQL_ERROR; } /************ * !!! ADD CODE TO FREE DRIVER SPECIFIC MEMORY (hidden in hEnvExtras) HERE !!! ************/ free( hEnv->hEnvExtras ); logPushMsg( hEnv->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); logClose( hEnv->hLog ); free( hEnv ); return SQL_SUCCESS; }
SQLRETURN SQLNumResultCols( SQLHSTMT hDrvStmt, SQLSMALLINT *pnColumnCount ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if ( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf( hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hStmt->szSqlMsg ); if ( hStmt->hStmtExtras->nRows < 0 ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR No result set." ); return SQL_ERROR; } /******************** * get number of columns in result set ********************/ *pnColumnCount = hStmt->hStmtExtras->nCols; logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; }
SQLRETURN _SQLDescribeCol( SQLHSTMT hDrvStmt, SQLUSMALLINT nCol, SQLCHAR *szColName, SQLSMALLINT nColNameMax, SQLSMALLINT *pnColNameLength, SQLSMALLINT *pnSQLDataType, SQLULEN *pnColSize, SQLSMALLINT *pnDecDigits, SQLSMALLINT *pnNullable ) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "_SQLDescribeCol" #endif HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; COLUMNHDR *pColumnHeader; /* SANITY CHECKS */ if ( NULL == hStmt ) return SQL_INVALID_HANDLE; if ( NULL == hStmt->hStmtExtras ) return SQL_INVALID_HANDLE; if ( hStmt->hStmtExtras->nRows < 1 ) { logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR No result set." ); return SQL_ERROR; } if ( nCol < 1 || nCol > hStmt->hStmtExtras->nCols ) { sprintf((char*) hStmt->szSqlMsg, "SQL_ERROR Column %d is out of range. Range is 1 - %d", nCol, hStmt->hStmtExtras->nCols ); logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); return SQL_ERROR; } /* OK */ pColumnHeader = (COLUMNHDR*)(hStmt->hStmtExtras->aResults)[nCol]; if ( szColName ) strncpy((char*) szColName, pColumnHeader->pszSQL_DESC_NAME, nColNameMax ); if ( pnColNameLength ) *pnColNameLength = strlen((char*) szColName ); if ( pnSQLDataType ) *pnSQLDataType = pColumnHeader->nSQL_DESC_TYPE; if ( pnColSize ) *pnColSize = pColumnHeader->nSQL_DESC_LENGTH; if ( pnDecDigits ) *pnDecDigits = pColumnHeader->nSQL_DESC_SCALE; if ( pnNullable ) *pnNullable = pColumnHeader->nSQL_DESC_NULLABLE; logPushMsg( hStmt->hLog, __FILE__, __FUNC__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN SQLSetPos( SQLHSTMT hDrvStmt, SQLSETPOSIROW nRow, SQLUSMALLINT nOperation, SQLUSMALLINT nLockType ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /* OK */ switch ( nOperation ) { case SQL_POSITION: break; case SQL_REFRESH: break; case SQL_UPDATE: break; case SQL_DELETE: break; default: sprintf((char*) hStmt->szSqlMsg, "SQL_ERROR Invalid nOperation=%d", nOperation ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); return SQL_ERROR; } switch ( nLockType ) { case SQL_LOCK_NO_CHANGE: break; case SQL_LOCK_EXCLUSIVE: break; case SQL_LOCK_UNLOCK: break; default: sprintf((char*) hStmt->szSqlMsg, "SQL_ERROR Invalid nLockType=%d", nLockType ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); return SQL_ERROR; } /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLGetConnectAttr( SQLHDBC hDrvDbc, SQLINTEGER nAttribute, SQLPOINTER pValue, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLength ) { HDRVDBC hDbc = (HDRVDBC)hDrvDbc; /* SANITY CHECKS */ if( NULL == hDbc ) return SQL_INVALID_HANDLE; sprintf((char*) hDbc->szSqlMsg, "START: hDbc = %p nAttribute = %d", hDbc, nAttribute ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO,(char*) hDbc->szSqlMsg ); /********************************************************/ /* DRIVER SPECIFIC */ switch ( nAttribute ) { case SQL_ATTR_AUTOCOMMIT: *(int*)pValue = SQL_AUTOCOMMIT_ON; break; case SQL_ATTR_CURRENT_CATALOG: strncpy( pValue, hDbc->hDbcExtras->pszDatabase, nBufferLength ); *pnStringLength = strlen( pValue ); break; case SQL_ATTR_ACCESS_MODE: case SQL_ATTR_ASYNC_ENABLE: case SQL_ATTR_CONNECTION_TIMEOUT: case SQL_ATTR_LOGIN_TIMEOUT: case SQL_ATTR_METADATA_ID: case SQL_ATTR_ODBC_CURSORS: case SQL_ATTR_PACKET_SIZE: case SQL_ATTR_QUIET_MODE: case SQL_ATTR_TRACE: case SQL_ATTR_TRACEFILE: case SQL_ATTR_TRANSLATE_LIB: case SQL_ATTR_TRANSLATE_OPTION: case SQL_ATTR_TXN_ISOLATION: default: logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "END: Attribute not supported." ); return SQL_ERROR; } /********************************************************/ logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "END: Success" ); return SQL_SUCCESS; }
SQLRETURN SQLExecute( SQLHSTMT hDrvStmt ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; int nColumn; int nCols; int nRow; COLUMNHDR *pColumnHeader; /* SANITY CHECKS */ if( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); if( hStmt->pszQuery == NULL ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR No prepared statement" ); return SQL_ERROR; } /************************** * Free any current results **************************/ if ( hStmt->hStmtExtras->aResults ) _FreeResults( hStmt->hStmtExtras ); /************************** * send prepared query to server **************************/ /************************** * allocate memory for columns headers and result data (row 0 is column header while col 0 is reserved for bookmarks) **************************/ /************************** * gather column header information (save col 0 for bookmarks) **************************/ /************************ * gather data (save col 0 for bookmarks) ************************/ /************************** * free the snapshot **************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; }
SQLRETURN SQLCancel( SQLHSTMT hDrvStmt ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf( hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLGetCursorName( SQLHSTMT hDrvStmt, SQLCHAR *szCursor, SQLSMALLINT nCursorMaxLength, SQLSMALLINT *pnCursorLength ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; int ci; /* counter variable */ /* SANITY CHECKS */ if ( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = %p", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); if ( NULL == szCursor ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR No cursor name." ); return SQL_ERROR; } /* ** copy cursor name */ strncpy((char*) szCursor,(char*) hStmt->szCursorName, nCursorMaxLength ); /* ** set length of transfered data */ ci = strlen((char*) hStmt->szCursorName ); /* if ( NULL != pnCursorLength ) *pnCursorLength = MIN( ci, nCursorMaxLength ); */ if ( nCursorMaxLength < ci ) { logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_SUCCESS_WITH_INFO Cursor was truncated" ); return SQL_SUCCESS_WITH_INFO; } logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" ); return SQL_SUCCESS; }
SQLRETURN SQLDescribeCol( SQLHSTMT hDrvStmt, SQLUSMALLINT nCol, SQLCHAR *szColName, SQLSMALLINT nColNameMax, SQLSMALLINT *pnColNameLength, SQLSMALLINT *pnSQLDataType, SQLULEN *pnColSize, SQLSMALLINT *pnDecDigits, SQLSMALLINT *pnNullable ) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "SQLDescribeCol" #endif SQLRETURN r; /************************ * SANITY CHECKS ************************/ if( NULL == hDrvStmt ) return SQL_INVALID_HANDLE; /* LOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_lock( &((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->mutex, ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->nMutexTimeout ) ) { logPushMsg( ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR mutex lock failed" ); return SQL_ERROR; } /* DOIT */ r = _SQLDescribeCol( hDrvStmt, nCol, szColName, nColNameMax, pnColNameLength, pnSQLDataType, pnColSize, pnDecDigits, pnNullable ); /* UNLOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_unlock( &((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->mutex) ) { logPushMsg( ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hLog, __FILE__, __FUNC__, __LINE__, LOG_ERROR, LOG_ERROR, "SQL_ERROR mutex unlock failed" ); return SQL_ERROR; } return r; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN SQLBrowseConnect( SQLHDBC hDrvDbc, SQLCHAR *szConnStrIn, SQLSMALLINT cbConnStrIn, SQLCHAR *szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT *pcbConnStrOut ) { HDRVDBC hDbc = (HDRVDBC)hDrvDbc; if ( hDbc == NULL ) return SQL_INVALID_HANDLE; sprintf( hDbc->szSqlMsg, "hDbc = $%08lX", hDbc ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg ); logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not currently supported" ); return SQL_ERROR; }
SQLRETURN SQLFetchScroll( SQLHSTMT hDrvStmt, SQLSMALLINT nOrientation, SQLLEN nOffset ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", (long)hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLPrimaryKeys( SQLHSTMT hDrvStmt, SQLCHAR *szCatalogName, SQLSMALLINT nCatalogNameLength, SQLCHAR *szSchemaName, SQLSMALLINT nSchemaNameLength, SQLCHAR *szTableName, SQLSMALLINT nTableNameLength ) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "SQLPrimaryKeys" #endif SQLRETURN r; /************************ * SANITY CHECKS ************************/ if( NULL == hDrvStmt ) return SQL_INVALID_HANDLE; /* LOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_lock( &((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->mutex, ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->nMutexTimeout ) ) { logPushMsg( ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR mutex lock failed" ); return SQL_ERROR; } /* DOIT */ r = _SQLPrimaryKeys( hDrvStmt, szCatalogName, nCatalogNameLength, szSchemaName, nSchemaNameLength, szTableName, nTableNameLength ); /* UNLOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_unlock( &((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hEnvExtras->mutex) ) { logPushMsg( ((HDRVENV)((HDRVDBC)((HDRVSTMT)hDrvStmt)->hDbc)->hEnv)->hLog, __FILE__, __FUNC__, __LINE__, LOG_ERROR, LOG_ERROR, "SQL_ERROR mutex unlock failed" ); return SQL_ERROR; } return r; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN SQLGetEnvAttr( SQLHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER BufferLength, SQLINTEGER *StringLength ) { #ifndef __FUNC__ #define _OTAR_RM_FUNC_ #define __FUNC__ "SQLGetEnvAttr" #endif SQLRETURN r; /************************ * SANITY CHECKS ************************/ if( NULL == EnvironmentHandle ) return SQL_INVALID_HANDLE; /* LOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_lock( &((HDRVENV)EnvironmentHandle)->hEnvExtras->mutex, ((HDRVENV)EnvironmentHandle)->hEnvExtras->nMutexTimeout ) ) { logPushMsg( ((HDRVENV)EnvironmentHandle)->hLog, __FILE__, __FUNC__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR mutex lock failed" ); return SQL_ERROR; } /* DOIT */ r = _SQLGetEnvAttr( EnvironmentHandle, Attribute, Value, BufferLength, StringLength ); /* UNLOCK THE MUTEX */ if( MUTEX_SUCESS != mutex_unlock( &((HDRVENV)EnvironmentHandle)->hEnvExtras->mutex) ) { logPushMsg( ((HDRVENV)EnvironmentHandle)->hLog, __FILE__, __FUNC__, __LINE__, LOG_ERROR, LOG_ERROR, "SQL_ERROR mutex unlock failed" ); return SQL_ERROR; } return r; #ifdef _OTAR_RM_FUNC_ #undef _OTAR_RM_FUNC_ #undef __FUNC__ #endif }
SQLRETURN SQLGetStmtAttr( SQLHSTMT hDrvStmt, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER BufferLength, SQLINTEGER *StringLength ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if ( NULL == hStmt ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLSetScrollOptions( SQLHSTMT hDrvStmt, UWORD fConcurrency, SDWORD crowKeyset, UWORD crowRowset ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf( hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLPutData( SQLHSTMT hDrvStmt, SQLPOINTER pData, SQLLEN nLengthOrIndicator ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if( hStmt == SQL_NULL_HSTMT ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "hStmt = $%08lX", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /************************ * REPLACE THIS COMMENT WITH SOMETHING USEFULL ************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR This function not supported" ); return SQL_ERROR; }
SQLRETURN SQLNumResultCols( SQLHSTMT hDrvStmt, SQLSMALLINT *pnColumnCount ) { HDRVSTMT hStmt = (HDRVSTMT)hDrvStmt; /* SANITY CHECKS */ if ( !hStmt ) return SQL_INVALID_HANDLE; sprintf((char*) hStmt->szSqlMsg, "START: hStmt = %p", hStmt ); logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING,(char*) hStmt->szSqlMsg ); /********************************************************/ /* DRIVER SPECIFIC */ if ( !hStmt->hStmtExtras->hResultSet ) *pnColumnCount = 0; else *pnColumnCount = hStmt->hStmtExtras->hResultSet->nCols; /********************************************************/ logPushMsg( hStmt->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "END: Success." ); return SQL_SUCCESS; }