aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/odbcapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/odbc/odbcapi.c')
-rw-r--r--src/interfaces/odbc/odbcapi.c602
1 files changed, 602 insertions, 0 deletions
diff --git a/src/interfaces/odbc/odbcapi.c b/src/interfaces/odbc/odbcapi.c
new file mode 100644
index 00000000000..d1ab5ce33f3
--- /dev/null
+++ b/src/interfaces/odbc/odbcapi.c
@@ -0,0 +1,602 @@
+/*-------
+ * Module: odbcapi.c
+ *
+ * Description: This module contains routines related to
+ * preparing and executing an SQL statement.
+ *
+ * Classes: n/a
+ *
+ * API functions: SQLAllocConnect, SQLAllocEnv, SQLAllocStmt,
+ SQLBindCol, SQLCancel, SQLColumns, SQLConnect,
+ SQLDataSources, SQLDescribeCol, SQLDisconnect,
+ SQLError, SQLExecDirect, SQLExecute, SQLFetch,
+ SQLFreeConnect, SQLFreeEnv, SQLFreeStmt,
+ SQLGetConnectOption, SQLGetCursorName, SQLGetData,
+ SQLGetFunctions, SQLGetInfo, SQLGetStmtOption,
+ SQLGetTypeInfo, SQLNumResultCols, SQLParamData,
+ SQLPrepare, SQLPutData, SQLRowCount,
+ SQLSetConnectOption, SQLSetCursorName, SQLSetParam,
+ SQLSetStmtOption, SQLSpecialColumns, SQLStatistics,
+ SQLTables, SQLTransact, SQLColAttributes,
+ SQLColumnPrivileges, SQLDescribeParam, SQLExtendedFetch,
+ SQLForeignKeys, SQLMoreResults, SQLNativeSql,
+ SQLNumParams, SQLParamOptions, SQLPrimaryKeys,
+ SQLProcedureColumns, SQLProcedures, SQLSetPos,
+ SQLTablePrivileges, SQLBindParameter
+ *-------
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "psqlodbc.h"
+#undef ODBCVER
+#define ODBCVER 0x3000
+#include <stdio.h>
+#include <string.h>
+
+#ifndef WIN32
+#include "iodbc.h"
+#include "isqlext.h"
+#else
+#include <windows.h>
+#include <sqlext.h>
+#endif
+#include "pgapifunc.h"
+#include "connection.h"
+#include "statement.h"
+
+SQLRETURN SQL_API SQLAllocConnect(SQLHENV EnvironmentHandle,
+ SQLHDBC *ConnectionHandle)
+{
+ mylog("[SQLAllocConnect]");
+ return PGAPI_AllocConnect(EnvironmentHandle, ConnectionHandle);
+}
+
+SQLRETURN SQL_API SQLAllocEnv(SQLHENV *EnvironmentHandle)
+{
+ mylog("[SQLAllocEnv]");
+ return PGAPI_AllocEnv(EnvironmentHandle);
+}
+
+SQLRETURN SQL_API SQLAllocStmt(SQLHDBC ConnectionHandle,
+ SQLHSTMT *StatementHandle)
+{
+ mylog("[SQLAllocStmt]");
+ return PGAPI_AllocStmt(ConnectionHandle, StatementHandle);
+}
+
+SQLRETURN SQL_API SQLBindCol(SQLHSTMT StatementHandle,
+ SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+ SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+ SQLINTEGER *StrLen_or_Ind)
+{
+ mylog("[SQLBindCol]");
+ return PGAPI_BindCol(StatementHandle, ColumnNumber,
+ TargetType, TargetValue, BufferLength, StrLen_or_Ind);
+}
+
+SQLRETURN SQL_API SQLCancel(SQLHSTMT StatementHandle)
+{
+ mylog("[SQLCancel]");
+ return PGAPI_Cancel(StatementHandle);
+}
+
+SQLRETURN SQL_API SQLColumns(SQLHSTMT StatementHandle,
+ SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+ SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+ SQLCHAR *TableName, SQLSMALLINT NameLength3,
+ SQLCHAR *ColumnName, SQLSMALLINT NameLength4)
+{
+ mylog("[SQLColumns]");
+ return PGAPI_Columns(StatementHandle, CatalogName, NameLength1,
+ SchemaName, NameLength2, TableName, NameLength3,
+ ColumnName, NameLength4);
+}
+
+
+SQLRETURN SQL_API SQLConnect(SQLHDBC ConnectionHandle,
+ SQLCHAR *ServerName, SQLSMALLINT NameLength1,
+ SQLCHAR *UserName, SQLSMALLINT NameLength2,
+ SQLCHAR *Authentication, SQLSMALLINT NameLength3)
+{
+ mylog("[SQLConnect]");
+ return PGAPI_Connect(ConnectionHandle, ServerName, NameLength1,
+ UserName, NameLength2, Authentication, NameLength3);
+}
+
+SQLRETURN SQL_API SQLDriverConnect(HDBC hdbc,
+ HWND hwnd,
+ UCHAR FAR *szConnStrIn,
+ SWORD cbConnStrIn,
+ UCHAR FAR *szConnStrOut,
+ SWORD cbConnStrOutMax,
+ SWORD FAR *pcbConnStrOut,
+ UWORD fDriverCompletion)
+{
+ mylog("[SQLDriverConnect]");
+ return PGAPI_DriverConnect(hdbc, hwnd, szConnStrIn, cbConnStrIn,
+ szConnStrOut, cbConnStrOutMax, pcbConnStrOut, fDriverCompletion);
+}
+SQLRETURN SQL_API SQLBrowseConnect(
+ SQLHDBC hdbc,
+ SQLCHAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT *pcbConnStrOut)
+{
+ mylog("[SQLBrowseConnect]");
+ return PGAPI_BrowseConnect(hdbc, szConnStrIn, cbConnStrIn,
+ szConnStrOut, cbConnStrOutMax, pcbConnStrOut);
+}
+
+SQLRETURN SQL_API SQLDataSources(SQLHENV EnvironmentHandle,
+ SQLUSMALLINT Direction, SQLCHAR *ServerName,
+ SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
+ SQLCHAR *Description, SQLSMALLINT BufferLength2,
+ SQLSMALLINT *NameLength2)
+{
+ mylog("[SQLDataSources]");
+ /*
+ return PGAPI_DataSources(EnvironmentHandle, Direction, ServerName,
+ BufferLength1, NameLength1, Description, BufferLength2,
+ NameLength2);
+ */
+ return SQL_ERROR;
+}
+
+SQLRETURN SQL_API SQLDescribeCol(SQLHSTMT StatementHandle,
+ SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
+ SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
+ SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
+ SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable)
+{
+ mylog("[SQLDescribeCol]");
+ return PGAPI_DescribeCol(StatementHandle, ColumnNumber,
+ ColumnName, BufferLength, NameLength,
+ DataType, ColumnSize, DecimalDigits, Nullable);
+}
+
+SQLRETURN SQL_API SQLDisconnect(SQLHDBC ConnectionHandle)
+{
+ mylog("[SQLDisconnect]");
+ return PGAPI_Disconnect(ConnectionHandle);
+}
+
+SQLRETURN SQL_API SQLError(SQLHENV EnvironmentHandle,
+ SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
+ SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
+ SQLCHAR *MessageText, SQLSMALLINT BufferLength,
+ SQLSMALLINT *TextLength)
+{
+ mylog("[SQLError]");
+ return PGAPI_Error(EnvironmentHandle, ConnectionHandle, StatementHandle,
+ Sqlstate, NativeError, MessageText, BufferLength, TextLength);
+}
+
+SQLRETURN SQL_API SQLExecDirect(SQLHSTMT StatementHandle,
+ SQLCHAR *StatementText, SQLINTEGER TextLength)
+{
+ mylog("[SQLExecDirect]");
+ return PGAPI_ExecDirect(StatementHandle, StatementText, TextLength);
+}
+
+SQLRETURN SQL_API SQLExecute(SQLHSTMT StatementHandle)
+{
+ mylog("[SQLExecute]");
+ return PGAPI_Execute(StatementHandle);
+}
+
+SQLRETURN SQL_API SQLFetch(SQLHSTMT StatementHandle)
+{
+ static char *func = "SQLFetch";
+#if (ODBCVER >= 0x3000)
+ StatementClass *stmt = (StatementClass *) StatementHandle;
+ ConnectionClass *conn = SC_get_conn(stmt);
+ if (conn->driver_version >= 0x0300)
+ {
+ SQLUSMALLINT *rowStatusArray = stmt->options.rowStatusArray;
+ SQLINTEGER *pcRow = stmt->options.rowsFetched;
+
+ mylog("[[%s]]", func);
+ return PGAPI_ExtendedFetch(StatementHandle, SQL_FETCH_NEXT, 0,
+ pcRow, rowStatusArray);
+ }
+#endif
+ mylog("[%s]", func);
+ return PGAPI_Fetch(StatementHandle);
+}
+
+SQLRETURN SQL_API SQLFreeConnect(SQLHDBC ConnectionHandle)
+{
+ mylog("[SQLFreeStmt]");
+ return PGAPI_FreeConnect(ConnectionHandle);
+}
+
+SQLRETURN SQL_API SQLFreeEnv(SQLHENV EnvironmentHandle)
+{
+ mylog("[SQLFreeEnv]");
+ return PGAPI_FreeEnv(EnvironmentHandle);
+}
+
+SQLRETURN SQL_API SQLFreeStmt(SQLHSTMT StatementHandle,
+ SQLUSMALLINT Option)
+{
+ mylog("[SQLFreeStmt]");
+ return PGAPI_FreeStmt(StatementHandle, Option);
+}
+
+SQLRETURN SQL_API SQLGetConnectOption(SQLHDBC ConnectionHandle,
+ SQLUSMALLINT Option, SQLPOINTER Value)
+{
+ mylog("[SQLGetConnectOption]");
+ return PGAPI_GetConnectOption(ConnectionHandle, Option, Value);
+}
+SQLRETURN SQL_API SQLGetCursorName(SQLHSTMT StatementHandle,
+ SQLCHAR *CursorName, SQLSMALLINT BufferLength,
+ SQLSMALLINT *NameLength)
+{
+ mylog("[SQLGetCursorName]");
+ return PGAPI_GetCursorName(StatementHandle, CursorName, BufferLength,
+ NameLength);
+}
+
+SQLRETURN SQL_API SQLGetData(SQLHSTMT StatementHandle,
+ SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+ SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+ SQLINTEGER *StrLen_or_Ind)
+{
+ mylog("[SQLGetData]");
+ return PGAPI_GetData(StatementHandle, ColumnNumber, TargetType,
+ TargetValue, BufferLength, StrLen_or_Ind);
+}
+
+SQLRETURN SQL_API SQLGetFunctions(SQLHDBC ConnectionHandle,
+ SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported)
+{
+ mylog("[SQLGetFunctions");
+#if (ODBCVER >= 0x3000)
+ if (FunctionId == SQL_API_ODBC3_ALL_FUNCTIONS)
+ return PGAPI_GetFunctions30(ConnectionHandle, FunctionId, Supported);
+#endif
+ return PGAPI_GetFunctions(ConnectionHandle, FunctionId, Supported);
+}
+SQLRETURN SQL_API SQLGetInfo(SQLHDBC ConnectionHandle,
+ SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+ SQLSMALLINT BufferLength, SQLSMALLINT *StringLength)
+{
+ mylog("[SQLGetInfo]");
+ return PGAPI_GetInfo(ConnectionHandle, InfoType, InfoValue,
+ BufferLength, StringLength);
+}
+
+SQLRETURN SQL_API SQLGetStmtOption(SQLHSTMT StatementHandle,
+ SQLUSMALLINT Option, SQLPOINTER Value)
+{
+ mylog("[SQLGetStmtOption]");
+ return PGAPI_GetStmtOption(StatementHandle, Option, Value);
+}
+
+SQLRETURN SQL_API SQLGetTypeInfo(SQLHSTMT StatementHandle,
+ SQLSMALLINT DataType)
+{
+ mylog("[SQLGetTypeInfo]");
+ return PGAPI_GetTypeInfo(StatementHandle,DataType);
+}
+
+SQLRETURN SQL_API SQLNumResultCols(SQLHSTMT StatementHandle,
+ SQLSMALLINT *ColumnCount)
+{
+ mylog("[SQLNumResultCols]");
+ return PGAPI_NumResultCols(StatementHandle, ColumnCount);
+}
+
+SQLRETURN SQL_API SQLParamData(SQLHSTMT StatementHandle,
+ SQLPOINTER *Value)
+{
+ mylog("[SQLParamData]");
+ return PGAPI_ParamData(StatementHandle, Value);
+}
+
+SQLRETURN SQL_API SQLPrepare(SQLHSTMT StatementHandle,
+ SQLCHAR *StatementText, SQLINTEGER TextLength)
+{
+ mylog("[SQLPrepare]");
+ return PGAPI_Prepare(StatementHandle, StatementText, TextLength);
+}
+
+SQLRETURN SQL_API SQLPutData(SQLHSTMT StatementHandle,
+ SQLPOINTER Data, SQLINTEGER StrLen_or_Ind)
+{
+ mylog("[SQLPutData]");
+ return PGAPI_PutData(StatementHandle, Data, StrLen_or_Ind);
+}
+
+SQLRETURN SQL_API SQLRowCount(SQLHSTMT StatementHandle,
+ SQLINTEGER *RowCount)
+{
+ mylog("[SQLRowCount]");
+ return PGAPI_RowCount(StatementHandle, RowCount);
+}
+
+SQLRETURN SQL_API SQLSetConnectOption(SQLHDBC ConnectionHandle,
+ SQLUSMALLINT Option, SQLUINTEGER Value)
+{
+ mylog("[SQLSetConnectionOption]");
+ return PGAPI_SetConnectOption(ConnectionHandle, Option, Value);
+}
+
+SQLRETURN SQL_API SQLSetCursorName(SQLHSTMT StatementHandle,
+ SQLCHAR *CursorName, SQLSMALLINT NameLength)
+{
+ mylog("[SQLSetCursorName]");
+ return PGAPI_SetCursorName(StatementHandle, CursorName, NameLength);
+}
+
+SQLRETURN SQL_API SQLSetParam(SQLHSTMT StatementHandle,
+ SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+ SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+ SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+ SQLINTEGER *StrLen_or_Ind)
+{
+ mylog("[SQLSetParam]");
+ /*
+ return PGAPI_SetParam(StatementHandle, ParameterNumber, ValueType,
+ ParameterType, LengthPrecision, ParameterScale, ParameterValue,
+ StrLen_or_Ind);
+ */
+ return SQL_ERROR;
+}
+
+SQLRETURN SQL_API SQLSetStmtOption(SQLHSTMT StatementHandle,
+ SQLUSMALLINT Option, SQLUINTEGER Value)
+{
+ mylog("[SQLSetStmtOption]");
+ return PGAPI_SetStmtOption(StatementHandle, Option, Value);
+}
+
+SQLRETURN SQL_API SQLSpecialColumns(SQLHSTMT StatementHandle,
+ SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
+ SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
+ SQLSMALLINT NameLength2, SQLCHAR *TableName,
+ SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
+ SQLUSMALLINT Nullable)
+{
+ mylog("[SQLSpecialColumns]");
+ return PGAPI_SpecialColumns(StatementHandle, IdentifierType, CatalogName,
+ NameLength1, SchemaName, NameLength2, TableName, NameLength3,
+ Scope, Nullable);
+}
+
+SQLRETURN SQL_API SQLStatistics(SQLHSTMT StatementHandle,
+ SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+ SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+ SQLCHAR *TableName, SQLSMALLINT NameLength3,
+ SQLUSMALLINT Unique, SQLUSMALLINT Reserved)
+{
+ mylog("[SQLStatistics]");
+ return PGAPI_Statistics(StatementHandle, CatalogName, NameLength1,
+ SchemaName, NameLength2, TableName, NameLength3, Unique,
+ Reserved);
+}
+
+SQLRETURN SQL_API SQLTables(SQLHSTMT StatementHandle,
+ SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+ SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+ SQLCHAR *TableName, SQLSMALLINT NameLength3,
+ SQLCHAR *TableType, SQLSMALLINT NameLength4)
+{
+ mylog("[SQLTables]");
+ return PGAPI_Tables(StatementHandle, CatalogName, NameLength1,
+ SchemaName, NameLength2, TableName, NameLength3,
+ TableType, NameLength4);
+}
+
+SQLRETURN SQL_API SQLTransact(SQLHENV EnvironmentHandle,
+ SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType)
+{
+ mylog("[SQLTransact]");
+ return PGAPI_Transact(EnvironmentHandle, ConnectionHandle, CompletionType);
+}
+
+SQLRETURN SQL_API SQLColAttributes(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLUSMALLINT fDescType,
+ SQLPOINTER rgbDesc,
+ SQLSMALLINT cbDescMax,
+ SQLSMALLINT *pcbDesc,
+ SQLINTEGER *pfDesc)
+{
+ mylog("[SQLColAttributes]");
+ return PGAPI_ColAttributes(hstmt, icol, fDescType, rgbDesc,
+ cbDescMax, pcbDesc, pfDesc);
+}
+
+SQLRETURN SQL_API SQLColumnPrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR *szColumnName,
+ SQLSMALLINT cbColumnName)
+{
+ mylog("[SQLColumnPrivileges]");
+ return PGAPI_ColumnPrivileges(hstmt, szCatalogName, cbCatalogName,
+ szSchemaName, cbSchemaName, szTableName, cbTableName,
+ szColumnName, cbColumnName);
+}
+
+SQLRETURN SQL_API SQLDescribeParam(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT *pfSqlType,
+ SQLUINTEGER *pcbParamDef,
+ SQLSMALLINT *pibScale,
+ SQLSMALLINT *pfNullable)
+{
+ mylog("[SQLDescribeParam]");
+ return PGAPI_DescribeParam(hstmt, ipar, pfSqlType, pcbParamDef,
+ pibScale, pfNullable);
+}
+
+SQLRETURN SQL_API SQLExtendedFetch(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fFetchType,
+ SQLINTEGER irow,
+ SQLUINTEGER *pcrow,
+ SQLUSMALLINT *rgfRowStatus)
+{
+ mylog("[SQLExtendedFetch]");
+ return PGAPI_ExtendedFetch(hstmt, fFetchType, irow, pcrow, rgfRowStatus);
+}
+
+SQLRETURN SQL_API SQLForeignKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR *szPkCatalogName,
+ SQLSMALLINT cbPkCatalogName,
+ SQLCHAR *szPkSchemaName,
+ SQLSMALLINT cbPkSchemaName,
+ SQLCHAR *szPkTableName,
+ SQLSMALLINT cbPkTableName,
+ SQLCHAR *szFkCatalogName,
+ SQLSMALLINT cbFkCatalogName,
+ SQLCHAR *szFkSchemaName,
+ SQLSMALLINT cbFkSchemaName,
+ SQLCHAR *szFkTableName,
+ SQLSMALLINT cbFkTableName)
+{
+ mylog("[SQLForeignKeys]");
+ return PGAPI_ForeignKeys(hstmt, szPkCatalogName, cbPkCatalogName,
+ szPkSchemaName, cbPkSchemaName, szPkTableName,
+ cbPkTableName, szFkCatalogName, cbFkCatalogName,
+ szFkSchemaName, cbFkSchemaName, szFkTableName, cbFkTableName);
+}
+
+SQLRETURN SQL_API SQLMoreResults(SQLHSTMT hstmt)
+{
+ mylog("[SQLMoreResults]");
+ return PGAPI_MoreResults(hstmt);
+}
+
+SQLRETURN SQL_API SQLNativeSql(
+ SQLHDBC hdbc,
+ SQLCHAR *szSqlStrIn,
+ SQLINTEGER cbSqlStrIn,
+ SQLCHAR *szSqlStr,
+ SQLINTEGER cbSqlStrMax,
+ SQLINTEGER *pcbSqlStr)
+{
+ mylog("[SQLNativeSql]");
+ return PGAPI_NativeSql(hdbc, szSqlStrIn, cbSqlStrIn, szSqlStr,
+ cbSqlStrMax, pcbSqlStr);
+}
+
+SQLRETURN SQL_API SQLNumParams(
+ SQLHSTMT hstmt,
+ SQLSMALLINT *pcpar)
+{
+ mylog("[SQLNumParams]");
+ return PGAPI_NumParams(hstmt, pcpar);
+}
+
+SQLRETURN SQL_API SQLParamOptions(
+ SQLHSTMT hstmt,
+ SQLUINTEGER crow,
+ SQLUINTEGER *pirow)
+{
+ mylog("[SQLParamOptions]");
+ return PGAPI_ParamOptions(hstmt, crow, pirow);
+}
+
+SQLRETURN SQL_API SQLPrimaryKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR *szTableName,
+ SQLSMALLINT cbTableName)
+{
+ mylog("[SQLPrimaryKeys]");
+ return PGAPI_PrimaryKeys(hstmt, szCatalogName, cbCatalogName,
+ szSchemaName, cbSchemaName, szTableName, cbTableName);
+}
+
+SQLRETURN SQL_API SQLProcedureColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR *szProcName,
+ SQLSMALLINT cbProcName,
+ SQLCHAR *szColumnName,
+ SQLSMALLINT cbColumnName)
+{
+ mylog("[SQLProcedureColumns]");
+ return PGAPI_ProcedureColumns(hstmt, szCatalogName, cbCatalogName,
+ szSchemaName, cbSchemaName, szProcName, cbProcName,
+ szColumnName, cbColumnName);
+}
+
+SQLRETURN SQL_API SQLProcedures(
+ SQLHSTMT hstmt,
+ SQLCHAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR *szProcName,
+ SQLSMALLINT cbProcName)
+{
+ mylog("[SQLProcedures]");
+ return PGAPI_Procedures(hstmt, szCatalogName, cbCatalogName,
+ szSchemaName, cbSchemaName, szProcName, cbProcName);
+}
+
+SQLRETURN SQL_API SQLSetPos(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT irow,
+ SQLUSMALLINT fOption,
+ SQLUSMALLINT fLock)
+{
+ mylog("[SQLSetPos]");
+ return PGAPI_SetPos(hstmt, irow, fOption, fLock);
+}
+
+SQLRETURN SQL_API SQLTablePrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR *szTableName,
+ SQLSMALLINT cbTableName)
+{
+ mylog("[SQLTablePrivileges]");
+ return PGAPI_TablePrivileges(hstmt, szCatalogName, cbCatalogName,
+ szSchemaName, cbSchemaName, szTableName, cbTableName);
+}
+
+SQLRETURN SQL_API SQLBindParameter(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fParamType,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbColDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER *pcbValue)
+{
+ mylog("[SQLBindParameter]");
+ return PGAPI_BindParameter(hstmt, ipar, fParamType, fCType,
+ fSqlType, cbColDef, ibScale, rgbValue, cbValueMax,
+ pcbValue);
+}