From: Hiroshi Inoue <inoue@tpf.co.jp>
Date: Tue, 21 Aug 2001 05:21:09 +0000 (+0000)
Subject: Fix a lot of compile errors on unix.
X-Git-Tag: REL7_2_BETA1~662
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c2f5d08c11176955c44d0a20c9ce7648157010ab;p=postgresql

Fix a lot of compile errors on unix.
Fix '\\' handling for bytea type.
---

diff --git a/src/interfaces/odbc/GNUmakefile b/src/interfaces/odbc/GNUmakefile
index 4d02a8d60c..18ba94470e 100644
--- a/src/interfaces/odbc/GNUmakefile
+++ b/src/interfaces/odbc/GNUmakefile
@@ -2,7 +2,7 @@
 #
 # GNUMakefile for psqlodbc (Postgres ODBC driver)
 #
-# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.16 2001/05/11 01:46:33 momjian Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.17 2001/08/21 05:21:09 inoue Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -21,7 +21,7 @@ override CPPFLAGS := -I$(srcdir) $(CPPFLAGS) -DHAVE_CONFIG_H -DODBCINSTDIR='"$(o
 OBJS = info.o bind.o columninfo.o connection.o convert.o drvconn.o \
         environ.o execute.o lobj.o misc.o options.o \
         pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o \
-        gpps.o tuple.o tuplelist.o dlg_specific.o $(OBJX)
+        gpps.o tuple.o tuplelist.o dlg_specific.o odbcapi.o $(OBJX)
 
 ifdef MULTIBYTE
 OBJS += multibyte.o
diff --git a/src/interfaces/odbc/convert.c b/src/interfaces/odbc/convert.c
index a87f84edb2..12d5ddf1b8 100644
--- a/src/interfaces/odbc/convert.c
+++ b/src/interfaces/odbc/convert.c
@@ -1969,8 +1969,16 @@ convert_from_pgbinary(unsigned char *value, unsigned char *rgbValue, int cbValue
 	{
 		if (value[i] == '\\')
 		{
-			rgbValue[o] = conv_from_octal(&value[i]);
-			i += 4;
+			if (value[i + 1] == '\\')
+			{
+				rgbValue[o] = value[i];
+				i += 2;
+			}
+			else
+			{
+				rgbValue[o] = conv_from_octal(&value[i]);
+				i += 4;
+			}
 		}
 		else
 			rgbValue[o] = value[i++];
diff --git a/src/interfaces/odbc/info.c b/src/interfaces/odbc/info.c
index 3da2708d3c..79854d6cd2 100644
--- a/src/interfaces/odbc/info.c
+++ b/src/interfaces/odbc/info.c
@@ -682,7 +682,6 @@ PGAPI_GetInfo(
 			break;
 
 		default:
-return PGAPI_GetInfo30(hdbc, fInfoType, rgbInfoValue, cbInfoValueMax,pcbInfoValue);
 			/* unrecognized key */
 			conn->errormsg = "Unrecognized key passed to PGAPI_GetInfo.";
 			conn->errornumber = CONN_NOT_IMPLEMENTED_ERROR;
diff --git a/src/interfaces/odbc/isql.h b/src/interfaces/odbc/isql.h
index d8a3c867fc..5a5a8afafd 100644
--- a/src/interfaces/odbc/isql.h
+++ b/src/interfaces/odbc/isql.h
@@ -26,7 +26,7 @@ typedef signed short RETCODE;
 #define SQL_API			 EXPORT CALLBACK
 #endif
 
-#define ODBCVER							0x0250
+/*#define ODBCVER		0x0250 */
 
 #define SQL_MAX_MESSAGE_LENGTH			512
 #define SQL_MAX_DSN_LENGTH				32
diff --git a/src/interfaces/odbc/odbcapi.c b/src/interfaces/odbc/odbcapi.c
index d1ab5ce33f..a69c3d1a94 100644
--- a/src/interfaces/odbc/odbcapi.c
+++ b/src/interfaces/odbc/odbcapi.c
@@ -31,8 +31,10 @@
 #endif
 
 #include "psqlodbc.h"
+#ifdef	WIN32
 #undef	ODBCVER
 #define	ODBCVER	0x3000
+#endif
 #include <stdio.h>
 #include <string.h>
 
@@ -47,29 +49,29 @@
 #include "connection.h"
 #include "statement.h"
 
-SQLRETURN  SQL_API SQLAllocConnect(SQLHENV EnvironmentHandle,
-           SQLHDBC *ConnectionHandle)
+RETCODE  SQL_API SQLAllocConnect(HENV EnvironmentHandle,
+           HDBC FAR *ConnectionHandle)
 {
 	mylog("[SQLAllocConnect]");
 	return PGAPI_AllocConnect(EnvironmentHandle, ConnectionHandle);
 }
 
-SQLRETURN  SQL_API SQLAllocEnv(SQLHENV *EnvironmentHandle)
+RETCODE  SQL_API SQLAllocEnv(HENV FAR *EnvironmentHandle)
 {
 	mylog("[SQLAllocEnv]");
 	return PGAPI_AllocEnv(EnvironmentHandle);
 }
 
-SQLRETURN  SQL_API SQLAllocStmt(SQLHDBC ConnectionHandle,
-           SQLHSTMT *StatementHandle)
+RETCODE  SQL_API SQLAllocStmt(HDBC ConnectionHandle,
+           HSTMT *StatementHandle)
 {
 	mylog("[SQLAllocStmt]");
 	return PGAPI_AllocStmt(ConnectionHandle, StatementHandle);
 }
 
-SQLRETURN  SQL_API SQLBindCol(SQLHSTMT StatementHandle, 
+RETCODE  SQL_API SQLBindCol(HSTMT StatementHandle, 
 		   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, 
-		   SQLPOINTER TargetValue, SQLINTEGER BufferLength, 
+		   PTR TargetValue, SQLINTEGER BufferLength, 
 	   	   SQLINTEGER *StrLen_or_Ind)
 {
 	mylog("[SQLBindCol]");
@@ -77,13 +79,13 @@ SQLRETURN  SQL_API SQLBindCol(SQLHSTMT StatementHandle,
 		  TargetType, TargetValue, BufferLength, StrLen_or_Ind);
 }
 
-SQLRETURN  SQL_API SQLCancel(SQLHSTMT StatementHandle)
+RETCODE  SQL_API SQLCancel(HSTMT StatementHandle)
 {
 	mylog("[SQLCancel]");
 	return PGAPI_Cancel(StatementHandle);
 }
 
-SQLRETURN  SQL_API SQLColumns(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLColumns(HSTMT StatementHandle,
            SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
            SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
            SQLCHAR *TableName, SQLSMALLINT NameLength3,
@@ -96,7 +98,7 @@ SQLRETURN  SQL_API SQLColumns(SQLHSTMT StatementHandle,
 }
 
 
-SQLRETURN  SQL_API SQLConnect(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API SQLConnect(HDBC ConnectionHandle,
            SQLCHAR *ServerName, SQLSMALLINT NameLength1,
            SQLCHAR *UserName, SQLSMALLINT NameLength2,
            SQLCHAR *Authentication, SQLSMALLINT NameLength3)
@@ -106,7 +108,7 @@ SQLRETURN  SQL_API SQLConnect(SQLHDBC ConnectionHandle,
            	UserName, NameLength2, Authentication, NameLength3);
 }
 
-SQLRETURN SQL_API SQLDriverConnect(HDBC hdbc,
+RETCODE SQL_API SQLDriverConnect(HDBC hdbc,
                                  HWND hwnd,
                                  UCHAR FAR *szConnStrIn,
                                  SWORD cbConnStrIn,
@@ -119,8 +121,8 @@ SQLRETURN SQL_API SQLDriverConnect(HDBC hdbc,
 	return PGAPI_DriverConnect(hdbc, hwnd, szConnStrIn, cbConnStrIn,
 		szConnStrOut, cbConnStrOutMax, pcbConnStrOut, fDriverCompletion);
 }
-SQLRETURN SQL_API SQLBrowseConnect(
-    SQLHDBC            hdbc,
+RETCODE SQL_API SQLBrowseConnect(
+    HDBC            hdbc,
     SQLCHAR 		  *szConnStrIn,
     SQLSMALLINT        cbConnStrIn,
     SQLCHAR 		  *szConnStrOut,
@@ -132,7 +134,7 @@ SQLRETURN SQL_API SQLBrowseConnect(
 		szConnStrOut, cbConnStrOutMax, pcbConnStrOut);
 }
 
-SQLRETURN  SQL_API SQLDataSources(SQLHENV EnvironmentHandle,
+RETCODE  SQL_API SQLDataSources(HENV EnvironmentHandle,
            SQLUSMALLINT Direction, SQLCHAR *ServerName,
            SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
            SQLCHAR *Description, SQLSMALLINT BufferLength2,
@@ -147,7 +149,7 @@ SQLRETURN  SQL_API SQLDataSources(SQLHENV EnvironmentHandle,
 	return SQL_ERROR;
 }
 
-SQLRETURN  SQL_API SQLDescribeCol(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLDescribeCol(HSTMT StatementHandle,
            SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
            SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
            SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
@@ -159,14 +161,14 @@ SQLRETURN  SQL_API SQLDescribeCol(SQLHSTMT StatementHandle,
            	DataType, ColumnSize, DecimalDigits, Nullable);
 }
 
-SQLRETURN  SQL_API SQLDisconnect(SQLHDBC ConnectionHandle)
+RETCODE  SQL_API SQLDisconnect(HDBC ConnectionHandle)
 {
 	mylog("[SQLDisconnect]");
 	return PGAPI_Disconnect(ConnectionHandle);
 }
 
-SQLRETURN  SQL_API SQLError(SQLHENV EnvironmentHandle,
-           SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLError(HENV EnvironmentHandle,
+           HDBC ConnectionHandle, HSTMT StatementHandle,
            SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
            SQLCHAR *MessageText, SQLSMALLINT BufferLength,
            SQLSMALLINT *TextLength)
@@ -176,20 +178,20 @@ SQLRETURN  SQL_API SQLError(SQLHENV EnvironmentHandle,
            	Sqlstate, NativeError, MessageText, BufferLength, TextLength);
 }
 
-SQLRETURN  SQL_API SQLExecDirect(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLExecDirect(HSTMT StatementHandle,
            SQLCHAR *StatementText, SQLINTEGER TextLength)
 {
 	mylog("[SQLExecDirect]");
 	return PGAPI_ExecDirect(StatementHandle, StatementText, TextLength);
 }
 
-SQLRETURN  SQL_API SQLExecute(SQLHSTMT StatementHandle)
+RETCODE  SQL_API SQLExecute(HSTMT StatementHandle)
 {
 	mylog("[SQLExecute]");
 	return PGAPI_Execute(StatementHandle);
 }
 
-SQLRETURN  SQL_API SQLFetch(SQLHSTMT StatementHandle)
+RETCODE  SQL_API SQLFetch(HSTMT StatementHandle)
 {
         static char *func = "SQLFetch";
 #if (ODBCVER >= 0x3000)
@@ -209,32 +211,32 @@ SQLRETURN  SQL_API SQLFetch(SQLHSTMT StatementHandle)
 	return PGAPI_Fetch(StatementHandle);
 }
 
-SQLRETURN  SQL_API SQLFreeConnect(SQLHDBC ConnectionHandle)
+RETCODE  SQL_API SQLFreeConnect(HDBC ConnectionHandle)
 {
 	mylog("[SQLFreeStmt]");
 	return PGAPI_FreeConnect(ConnectionHandle);
 }
 
-SQLRETURN  SQL_API SQLFreeEnv(SQLHENV EnvironmentHandle)
+RETCODE  SQL_API SQLFreeEnv(HENV EnvironmentHandle)
 {
 	mylog("[SQLFreeEnv]");
 	return PGAPI_FreeEnv(EnvironmentHandle);
 }
 
-SQLRETURN  SQL_API SQLFreeStmt(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLFreeStmt(HSTMT StatementHandle,
            SQLUSMALLINT Option)
 {
 	mylog("[SQLFreeStmt]");
 	return PGAPI_FreeStmt(StatementHandle, Option);
 }
 
-SQLRETURN  SQL_API SQLGetConnectOption(SQLHDBC ConnectionHandle,
-           SQLUSMALLINT Option, SQLPOINTER Value)
+RETCODE  SQL_API SQLGetConnectOption(HDBC ConnectionHandle,
+           SQLUSMALLINT Option, PTR Value)
 {
 	mylog("[SQLGetConnectOption]");
 	return PGAPI_GetConnectOption(ConnectionHandle, Option, Value);
 } 
-SQLRETURN  SQL_API SQLGetCursorName(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLGetCursorName(HSTMT StatementHandle,
            SQLCHAR *CursorName, SQLSMALLINT BufferLength,
            SQLSMALLINT *NameLength)
 {
@@ -243,9 +245,9 @@ SQLRETURN  SQL_API SQLGetCursorName(SQLHSTMT StatementHandle,
            	NameLength);
 }
 
-SQLRETURN  SQL_API SQLGetData(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLGetData(HSTMT StatementHandle,
            SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
-           SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+           PTR TargetValue, SQLINTEGER BufferLength,
            SQLINTEGER *StrLen_or_Ind)
 {
 	mylog("[SQLGetData]");
@@ -253,7 +255,7 @@ SQLRETURN  SQL_API SQLGetData(SQLHSTMT StatementHandle,
            	TargetValue, BufferLength, StrLen_or_Ind);
 }
 
-SQLRETURN  SQL_API SQLGetFunctions(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API SQLGetFunctions(HDBC ConnectionHandle,
            SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported)
 {
 	mylog("[SQLGetFunctions");
@@ -263,82 +265,93 @@ SQLRETURN  SQL_API SQLGetFunctions(SQLHDBC ConnectionHandle,
 #endif
 	return PGAPI_GetFunctions(ConnectionHandle, FunctionId, Supported);
 }
-SQLRETURN  SQL_API SQLGetInfo(SQLHDBC ConnectionHandle,
-           SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+RETCODE  SQL_API SQLGetInfo(HDBC ConnectionHandle,
+           SQLUSMALLINT InfoType, PTR InfoValue,
            SQLSMALLINT BufferLength, SQLSMALLINT *StringLength)
 {
+#if (ODBCVER >= 0x3000)
+	RETCODE	ret;
+	mylog("[SQLGetInfo(30)]");
+	if ((ret = PGAPI_GetInfo(ConnectionHandle, InfoType, InfoValue,
+           	BufferLength, StringLength)) == SQL_ERROR)
+		return PGAPI_GetInfo30(ConnectionHandle, InfoType, InfoValue,
+           	BufferLength, StringLength);
+	else
+		return ret;
+#else
 	mylog("[SQLGetInfo]");
 	return PGAPI_GetInfo(ConnectionHandle, InfoType, InfoValue,
            	BufferLength, StringLength);
+#endif
 }
 
-SQLRETURN  SQL_API SQLGetStmtOption(SQLHSTMT StatementHandle,
-           SQLUSMALLINT Option, SQLPOINTER Value)
+RETCODE  SQL_API SQLGetStmtOption(HSTMT StatementHandle,
+           SQLUSMALLINT Option, PTR Value)
 {
 	mylog("[SQLGetStmtOption]");
 	return PGAPI_GetStmtOption(StatementHandle, Option, Value);
 }
 
-SQLRETURN  SQL_API SQLGetTypeInfo(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLGetTypeInfo(HSTMT StatementHandle,
            SQLSMALLINT DataType)
 {
 	mylog("[SQLGetTypeInfo]");
 	return PGAPI_GetTypeInfo(StatementHandle,DataType);
 }
 
-SQLRETURN  SQL_API SQLNumResultCols(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLNumResultCols(HSTMT StatementHandle,
            SQLSMALLINT *ColumnCount)
 {
 	mylog("[SQLNumResultCols]");
 	return PGAPI_NumResultCols(StatementHandle, ColumnCount);
 }
 
-SQLRETURN  SQL_API SQLParamData(SQLHSTMT StatementHandle,
-           SQLPOINTER *Value)
+RETCODE  SQL_API SQLParamData(HSTMT StatementHandle,
+           PTR *Value)
 {
 	mylog("[SQLParamData]");
 	return PGAPI_ParamData(StatementHandle, Value);
 }
 
-SQLRETURN  SQL_API SQLPrepare(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLPrepare(HSTMT 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)
+RETCODE  SQL_API SQLPutData(HSTMT StatementHandle,
+           PTR Data, SQLINTEGER StrLen_or_Ind)
 {
 	mylog("[SQLPutData]");
 	return PGAPI_PutData(StatementHandle, Data, StrLen_or_Ind);
 }
 
-SQLRETURN  SQL_API SQLRowCount(SQLHSTMT StatementHandle, 
+RETCODE  SQL_API SQLRowCount(HSTMT StatementHandle, 
 	   SQLINTEGER *RowCount)
 {
 	mylog("[SQLRowCount]");
 	return PGAPI_RowCount(StatementHandle, RowCount);
 }
 
-SQLRETURN  SQL_API SQLSetConnectOption(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API SQLSetConnectOption(HDBC ConnectionHandle,
            SQLUSMALLINT Option, SQLUINTEGER Value)
 {
 	mylog("[SQLSetConnectionOption]");
 	return PGAPI_SetConnectOption(ConnectionHandle, Option, Value);
 }
 
-SQLRETURN  SQL_API SQLSetCursorName(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLSetCursorName(HSTMT StatementHandle,
            SQLCHAR *CursorName, SQLSMALLINT NameLength)
 {
 	mylog("[SQLSetCursorName]");
 	return PGAPI_SetCursorName(StatementHandle, CursorName, NameLength);
 }
 
-SQLRETURN  SQL_API SQLSetParam(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLSetParam(HSTMT StatementHandle,
            SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
            SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
-           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLSMALLINT ParameterScale, PTR ParameterValue,
            SQLINTEGER *StrLen_or_Ind)
 {
 	mylog("[SQLSetParam]");
@@ -350,14 +363,14 @@ SQLRETURN  SQL_API SQLSetParam(SQLHSTMT StatementHandle,
         return SQL_ERROR;
 }
 
-SQLRETURN  SQL_API SQLSetStmtOption(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLSetStmtOption(HSTMT StatementHandle,
            SQLUSMALLINT Option, SQLUINTEGER Value)
 {
 	mylog("[SQLSetStmtOption]");
 	return PGAPI_SetStmtOption(StatementHandle, Option, Value);
 }
 
-SQLRETURN  SQL_API SQLSpecialColumns(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLSpecialColumns(HSTMT StatementHandle,
            SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
            SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
            SQLSMALLINT NameLength2, SQLCHAR *TableName,
@@ -370,7 +383,7 @@ SQLRETURN  SQL_API SQLSpecialColumns(SQLHSTMT StatementHandle,
 		Scope, Nullable);
 }
 
-SQLRETURN  SQL_API SQLStatistics(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLStatistics(HSTMT StatementHandle,
            SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
            SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
            SQLCHAR *TableName, SQLSMALLINT NameLength3,
@@ -382,7 +395,7 @@ SQLRETURN  SQL_API SQLStatistics(SQLHSTMT StatementHandle,
 		Reserved);
 }
 
-SQLRETURN  SQL_API SQLTables(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLTables(HSTMT StatementHandle,
            SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
            SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
            SQLCHAR *TableName, SQLSMALLINT NameLength3,
@@ -394,18 +407,18 @@ SQLRETURN  SQL_API SQLTables(SQLHSTMT StatementHandle,
            TableType, NameLength4);
 }
 
-SQLRETURN  SQL_API SQLTransact(SQLHENV EnvironmentHandle,
-           SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType)
+RETCODE  SQL_API SQLTransact(HENV EnvironmentHandle,
+           HDBC ConnectionHandle, SQLUSMALLINT CompletionType)
 {
 	mylog("[SQLTransact]");
 	return PGAPI_Transact(EnvironmentHandle, ConnectionHandle, CompletionType);
 }
 
-SQLRETURN SQL_API SQLColAttributes(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLColAttributes(
+    HSTMT           hstmt,
     SQLUSMALLINT       icol,
     SQLUSMALLINT       fDescType,
-    SQLPOINTER         rgbDesc,
+    PTR         rgbDesc,
     SQLSMALLINT        cbDescMax,
     SQLSMALLINT 	  *pcbDesc,
     SQLINTEGER 		  *pfDesc)
@@ -415,8 +428,8 @@ SQLRETURN SQL_API SQLColAttributes(
 		cbDescMax, pcbDesc, pfDesc);
 }
 
-SQLRETURN SQL_API SQLColumnPrivileges(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLColumnPrivileges(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -432,8 +445,8 @@ SQLRETURN SQL_API SQLColumnPrivileges(
 		szColumnName, cbColumnName);
 }
 
-SQLRETURN SQL_API SQLDescribeParam(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLDescribeParam(
+    HSTMT           hstmt,
     SQLUSMALLINT       ipar,
     SQLSMALLINT 	  *pfSqlType,
     SQLUINTEGER 	  *pcbParamDef,
@@ -445,8 +458,8 @@ SQLRETURN SQL_API SQLDescribeParam(
 		pibScale, pfNullable);
 }
 
-SQLRETURN SQL_API SQLExtendedFetch(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLExtendedFetch(
+    HSTMT           hstmt,
     SQLUSMALLINT       fFetchType,
     SQLINTEGER         irow,
     SQLUINTEGER 	  *pcrow,
@@ -456,8 +469,8 @@ SQLRETURN SQL_API SQLExtendedFetch(
 	return PGAPI_ExtendedFetch(hstmt, fFetchType, irow, pcrow, rgfRowStatus);
 }
 
-SQLRETURN SQL_API SQLForeignKeys(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLForeignKeys(
+    HSTMT           hstmt,
     SQLCHAR 		  *szPkCatalogName,
     SQLSMALLINT        cbPkCatalogName,
     SQLCHAR 		  *szPkSchemaName,
@@ -478,14 +491,14 @@ SQLRETURN SQL_API SQLForeignKeys(
  		szFkSchemaName, cbFkSchemaName, szFkTableName, cbFkTableName);
 }
 
-SQLRETURN SQL_API SQLMoreResults(SQLHSTMT hstmt)
+RETCODE SQL_API SQLMoreResults(HSTMT hstmt)
 {
 	mylog("[SQLMoreResults]");
 	return PGAPI_MoreResults(hstmt);
 }
  
-SQLRETURN SQL_API SQLNativeSql(
-    SQLHDBC            hdbc,
+RETCODE SQL_API SQLNativeSql(
+    HDBC            hdbc,
     SQLCHAR 		  *szSqlStrIn,
     SQLINTEGER         cbSqlStrIn,
     SQLCHAR 		  *szSqlStr,
@@ -497,16 +510,16 @@ SQLRETURN SQL_API SQLNativeSql(
 		cbSqlStrMax, pcbSqlStr);
 }
 
-SQLRETURN SQL_API SQLNumParams(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLNumParams(
+    HSTMT           hstmt,
     SQLSMALLINT 	  *pcpar)
 {
 	mylog("[SQLNumParams]");
 	return PGAPI_NumParams(hstmt, pcpar);
 }
 
-SQLRETURN SQL_API SQLParamOptions(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLParamOptions(
+    HSTMT           hstmt,
     SQLUINTEGER        crow,
     SQLUINTEGER 	  *pirow)
 {
@@ -514,8 +527,8 @@ SQLRETURN SQL_API SQLParamOptions(
 	return PGAPI_ParamOptions(hstmt, crow, pirow);
 }
 
-SQLRETURN SQL_API SQLPrimaryKeys(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLPrimaryKeys(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -528,8 +541,8 @@ SQLRETURN SQL_API SQLPrimaryKeys(
 		szSchemaName, cbSchemaName, szTableName, cbTableName);
 }
 
-SQLRETURN SQL_API SQLProcedureColumns(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLProcedureColumns(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -545,8 +558,8 @@ SQLRETURN SQL_API SQLProcedureColumns(
 		szColumnName, cbColumnName);
 }
 
-SQLRETURN SQL_API SQLProcedures(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLProcedures(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -559,8 +572,8 @@ SQLRETURN SQL_API SQLProcedures(
 		szSchemaName, cbSchemaName, szProcName, cbProcName);
 }
 
-SQLRETURN SQL_API SQLSetPos(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLSetPos(
+    HSTMT           hstmt,
     SQLUSMALLINT       irow,
     SQLUSMALLINT       fOption,
     SQLUSMALLINT       fLock)
@@ -569,8 +582,8 @@ SQLRETURN SQL_API SQLSetPos(
 	return PGAPI_SetPos(hstmt, irow, fOption, fLock);
 }
 
-SQLRETURN SQL_API SQLTablePrivileges(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLTablePrivileges(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -583,15 +596,15 @@ SQLRETURN SQL_API SQLTablePrivileges(
 		szSchemaName, cbSchemaName, szTableName, cbTableName);
 }
 
-SQLRETURN SQL_API SQLBindParameter(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API SQLBindParameter(
+    HSTMT           hstmt,
     SQLUSMALLINT       ipar,
     SQLSMALLINT        fParamType,
     SQLSMALLINT        fCType,
     SQLSMALLINT        fSqlType,
     SQLUINTEGER        cbColDef,
     SQLSMALLINT        ibScale,
-    SQLPOINTER         rgbValue,
+    PTR         rgbValue,
     SQLINTEGER         cbValueMax,
     SQLINTEGER 		  *pcbValue)
 {
diff --git a/src/interfaces/odbc/odbcapi30.c b/src/interfaces/odbc/odbcapi30.c
index b51c6b1ac0..9902be746d 100644
--- a/src/interfaces/odbc/odbcapi30.c
+++ b/src/interfaces/odbc/odbcapi30.c
@@ -41,7 +41,7 @@
 #include "pgapifunc.h"
 
 /*	SQLAllocConnect/SQLAllocEnv/SQLAllocStmt -> SQLAllocHandle */
-SQLRETURN  SQL_API SQLAllocHandle(SQLSMALLINT HandleType,
+RETCODE  SQL_API SQLAllocHandle(SQLSMALLINT HandleType,
            SQLHANDLE InputHandle, SQLHANDLE *OutputHandle)
 {
 	mylog("[[SQLAllocHandle]]");
@@ -58,10 +58,10 @@ SQLRETURN  SQL_API SQLAllocHandle(SQLSMALLINT HandleType,
 	return SQL_ERROR;
 }
 /*	SQLBindParameter/SQLSetParam -> SQLBindParam */
-SQLRETURN  SQL_API SQLBindParam(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLBindParam(HSTMT StatementHandle,
            SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
            SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
-           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLSMALLINT ParameterScale, PTR ParameterValue,
            SQLINTEGER *StrLen_or_Ind)
 {
 	int	BufferLength = 512; /* Is it OK ? */
@@ -69,17 +69,17 @@ SQLRETURN  SQL_API SQLBindParam(SQLHSTMT StatementHandle,
 	return PGAPI_BindParameter(StatementHandle, ParameterNumber, SQL_PARAM_INPUT, ValueType, ParameterType, LengthPrecision, ParameterScale, ParameterValue, BufferLength, StrLen_or_Ind);
 }
 /*	New function */
-SQLRETURN  SQL_API SQLCloseCursor(SQLHSTMT StatementHandle)
+RETCODE  SQL_API SQLCloseCursor(HSTMT StatementHandle)
 {
 	mylog("[[SQLCloseCursor]]");
 	return PGAPI_FreeStmt(StatementHandle, SQL_CLOSE);
 }
 
 /*	SQLColAttributes -> SQLColAttribute */
-SQLRETURN  SQL_API SQLColAttribute (SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLColAttribute (HSTMT StatementHandle,
            SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
-           SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
-           SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute)
+           PTR CharacterAttribute, SQLSMALLINT BufferLength,
+           SQLSMALLINT *StringLength, PTR NumericAttribute)
 {
 	mylog("[[SQLColAttribute]]");
 	return PGAPI_ColAttributes(StatementHandle, ColumnNumber,
@@ -87,14 +87,14 @@ SQLRETURN  SQL_API SQLColAttribute (SQLHSTMT StatementHandle,
 		StringLength, NumericAttribute);
 }
 /*	new function */
-SQLRETURN  SQL_API SQLCopyDesc(SQLHDESC SourceDescHandle,
+RETCODE  SQL_API SQLCopyDesc(SQLHDESC SourceDescHandle,
            SQLHDESC TargetDescHandle)
 {
 	mylog("[[SQLCopyDesc]]\n");
 	return SQL_ERROR;
 }
 /*	SQLTransact -> SQLEndTran */	
-SQLRETURN  SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
+RETCODE  SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
            SQLSMALLINT CompletionType)
 {
 	mylog("[[SQLEndTran]]");
@@ -110,12 +110,12 @@ SQLRETURN  SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
 
 }
 /*	SQLExtendedFetch -> SQLFetchScroll */
-SQLRETURN  SQL_API SQLFetchScroll(SQLHSTMT StatementHandle,
+RETCODE  SQL_API SQLFetchScroll(HSTMT StatementHandle,
            SQLSMALLINT FetchOrientation, SQLINTEGER FetchOffset)
 {
 	static char *func = "SQLFetchScroll";
 	StatementClass	*stmt = (StatementClass *) StatementHandle;
-	SQLRETURN	ret;
+	RETCODE	ret;
 	SQLUSMALLINT	*rowStatusArray = stmt->options.rowStatusArray;
 	SQLINTEGER	*pcRow = stmt->options.rowsFetched;
 	mylog("[[%s]] %d,%d\n", func, FetchOrientation, FetchOffset);
@@ -138,7 +138,7 @@ SQLRETURN  SQL_API SQLFetchScroll(SQLHSTMT StatementHandle,
 	return ret;
 }
 /*	SQLFree(Connect/Env/Stmt) -> SQLFreeHandle */
-SQLRETURN  SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
+RETCODE  SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
 {
 	mylog("[[SQLFreeHandle]]");
 	switch (HandleType)
@@ -154,16 +154,16 @@ SQLRETURN  SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
 	return SQL_ERROR;
 }
 /*	new function */
-SQLRETURN  SQL_API SQLGetDescField(SQLHDESC DescriptorHandle,
+RETCODE  SQL_API SQLGetDescField(SQLHDESC DescriptorHandle,
            SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
-           SQLPOINTER Value, SQLINTEGER BufferLength,
+           PTR Value, SQLINTEGER BufferLength,
            SQLINTEGER *StringLength)
 {
 	mylog("[[SQLGetDescField]]\n");
 	return SQL_ERROR;
 }
 /*	new function */
-SQLRETURN  SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle,
+RETCODE  SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle,
            SQLSMALLINT RecNumber, SQLCHAR *Name,
            SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
            SQLSMALLINT *Type, SQLSMALLINT *SubType, 
@@ -174,21 +174,21 @@ SQLRETURN  SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle,
 	return SQL_ERROR;
 }
 /*	new function */
-SQLRETURN  SQL_API SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
+RETCODE  SQL_API SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
            SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
-           SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
+           PTR DiagInfo, SQLSMALLINT BufferLength,
            SQLSMALLINT *StringLength)
 {
 	mylog("[[SQLGetDiagField]]\n");
 	return SQL_ERROR;
 }
 /*	SQLError -> SQLDiagRec */
-SQLRETURN  SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
+RETCODE  SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
            SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
            SQLINTEGER *NativeError, SQLCHAR *MessageText,
            SQLSMALLINT BufferLength, SQLSMALLINT *TextLength)
 {
-	SQLRETURN	ret;
+	RETCODE	ret;
 	mylog("[[SQLGetDiagRec]]\n");
 	switch (HandleType)
 	{
@@ -221,8 +221,8 @@ SQLRETURN  SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
 	return ret;
 }
 /*	new function */
-SQLRETURN  SQL_API SQLGetEnvAttr(SQLHENV EnvironmentHandle,
-           SQLINTEGER Attribute, SQLPOINTER Value,
+RETCODE  SQL_API SQLGetEnvAttr(HENV EnvironmentHandle,
+           SQLINTEGER Attribute, PTR Value,
            SQLINTEGER BufferLength, SQLINTEGER *StringLength)
 {
 	EnvironmentClass *env = (EnvironmentClass *) EnvironmentHandle;
@@ -248,8 +248,8 @@ SQLRETURN  SQL_API SQLGetEnvAttr(SQLHENV EnvironmentHandle,
 	return SQL_SUCCESS;
 }
 /*	SQLGetConnectOption -> SQLGetconnectAttr */
-SQLRETURN  SQL_API SQLGetConnectAttr(SQLHDBC ConnectionHandle,
-           SQLINTEGER Attribute, SQLPOINTER Value,
+RETCODE  SQL_API SQLGetConnectAttr(HDBC ConnectionHandle,
+           SQLINTEGER Attribute, PTR Value,
            SQLINTEGER BufferLength, SQLINTEGER *StringLength)
 {
 	ConnectionClass	*conn = (ConnectionClass *) ConnectionHandle;
@@ -268,13 +268,13 @@ SQLRETURN  SQL_API SQLGetConnectAttr(SQLHDBC ConnectionHandle,
 	return PGAPI_GetConnectOption (ConnectionHandle, (UWORD) Attribute, Value);
 }
 /*	SQLGetStmtOption -> SQLGetStmtAttr */
-SQLRETURN  SQL_API SQLGetStmtAttr(SQLHSTMT StatementHandle,
-           SQLINTEGER Attribute, SQLPOINTER Value,
+RETCODE  SQL_API SQLGetStmtAttr(HSTMT StatementHandle,
+           SQLINTEGER Attribute, PTR Value,
            SQLINTEGER BufferLength, SQLINTEGER *StringLength)
 {
 	static char *func = "SQLGetStmtAttr";
 	StatementClass	*stmt = (StatementClass *) StatementHandle;
-	SQLRETURN	ret = SQL_SUCCESS;
+	RETCODE	ret = SQL_SUCCESS;
 	int	len = 0;
 	mylog("[[%s]] %d\n", func, Attribute);
 	switch (Attribute)
@@ -296,19 +296,19 @@ SQLRETURN  SQL_API SQLGetStmtAttr(SQLHSTMT StatementHandle,
 			len = 4;
 			break; 
 		case SQL_ATTR_APP_ROW_DESC:	/* 10010 */
-			*((SQLHSTMT *) Value) = StatementHandle; /* this is useless */
+			*((HSTMT *) Value) = StatementHandle; /* this is useless */
 			len = 4;
 			break; 	
 		case SQL_ATTR_APP_PARAM_DESC:	/* 10011 */
-			*((SQLHSTMT *) Value) = StatementHandle; /* this is useless */
+			*((HSTMT *) Value) = StatementHandle; /* this is useless */
 			len = 4;
 			break; 	
 		case SQL_ATTR_IMP_ROW_DESC:	/* 10012 */
-			*((SQLHSTMT *) Value) = StatementHandle; /* this is useless */
+			*((HSTMT *) Value) = StatementHandle; /* this is useless */
 			len = 4;
 			break; 	
 		case SQL_ATTR_IMP_PARAM_DESC:	/* 10013 */
-			*((SQLHSTMT *) Value) = StatementHandle; /* this is useless */
+			*((HSTMT *) Value) = StatementHandle; /* this is useless */
 			len = 4;
 			break; 	
 		case SQL_ATTR_AUTO_IPD:		/* 10001 */
@@ -343,8 +343,8 @@ SQLRETURN  SQL_API SQLGetStmtAttr(SQLHSTMT StatementHandle,
 }
 
 /*	SQLSetConnectOption -> SQLSetConnectAttr */
-SQLRETURN  SQL_API SQLSetConnectAttr(SQLHDBC ConnectionHandle,
-           SQLINTEGER Attribute, SQLPOINTER Value,
+RETCODE  SQL_API SQLSetConnectAttr(HDBC ConnectionHandle,
+           SQLINTEGER Attribute, PTR Value,
            SQLINTEGER StringLength)
 {
 	ConnectionClass	*conn = (ConnectionClass *) ConnectionHandle;
@@ -364,27 +364,27 @@ SQLRETURN  SQL_API SQLSetConnectAttr(SQLHDBC ConnectionHandle,
 	return PGAPI_SetConnectOption(ConnectionHandle, (UWORD) Attribute, (UDWORD) Value);
 }
 /*	new function */
-SQLRETURN  SQL_API SQLSetDescField(SQLHDESC DescriptorHandle,
+RETCODE  SQL_API SQLSetDescField(SQLHDESC DescriptorHandle,
            SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
-           SQLPOINTER Value, SQLINTEGER BufferLength)
+           PTR Value, SQLINTEGER BufferLength)
 {
 	mylog("[[SQLSetDescField]]\n");
 	return SQL_ERROR;
 }
 /*	new fucntion */
-SQLRETURN  SQL_API SQLSetDescRec(SQLHDESC DescriptorHandle,
+RETCODE  SQL_API SQLSetDescRec(SQLHDESC DescriptorHandle,
            SQLSMALLINT RecNumber, SQLSMALLINT Type,
            SQLSMALLINT SubType, SQLINTEGER Length,
            SQLSMALLINT Precision, SQLSMALLINT Scale,
-           SQLPOINTER Data, SQLINTEGER *StringLength,
+           PTR Data, SQLINTEGER *StringLength,
            SQLINTEGER *Indicator)
 {
 	mylog("[[SQLsetDescRec]]\n");
 	return SQL_ERROR;
 }
 /*	new function */
-SQLRETURN  SQL_API SQLSetEnvAttr(SQLHENV EnvironmentHandle,
-           SQLINTEGER Attribute, SQLPOINTER Value,
+RETCODE  SQL_API SQLSetEnvAttr(HENV EnvironmentHandle,
+           SQLINTEGER Attribute, PTR Value,
            SQLINTEGER StringLength)
 {
 	EnvironmentClass *env = (EnvironmentClass *) EnvironmentHandle;
@@ -415,8 +415,8 @@ SQLRETURN  SQL_API SQLSetEnvAttr(SQLHENV EnvironmentHandle,
 	return SQL_SUCCESS_WITH_INFO;
 }
 /*	SQLSet(Param/Scroll/Stmt)Option -> SQLSetStmtAttr */
-SQLRETURN  SQL_API SQLSetStmtAttr(SQLHSTMT StatementHandle,
-           SQLINTEGER Attribute, SQLPOINTER Value,
+RETCODE  SQL_API SQLSetStmtAttr(HSTMT StatementHandle,
+           SQLINTEGER Attribute, PTR Value,
            SQLINTEGER StringLength)
 {
 	static char *func = "SQLSetStmtAttr";
@@ -569,7 +569,7 @@ PGAPI_GetFunctions30(HDBC hdbc, UWORD fFunction, UWORD FAR *pfExists)
 
 	return SQL_SUCCESS;
 }
-SQLRETURN SQL_API
+RETCODE SQL_API
 PGAPI_GetInfo30(HDBC hdbc, UWORD fInfoType, PTR rgbInfoValue,
 		SWORD cbInfoValueMax, SWORD FAR *pcbInfoValue)
 {
@@ -577,7 +577,7 @@ PGAPI_GetInfo30(HDBC hdbc, UWORD fInfoType, PTR rgbInfoValue,
 	ConnectionClass *conn = (ConnectionClass *) hdbc;
 	char	*p = NULL;
 	int	len = 0, value = 0;
-	SQLRETURN	result;
+	RETCODE	result;
 
 	switch (fInfoType)
 	{
diff --git a/src/interfaces/odbc/pgapifunc.h b/src/interfaces/odbc/pgapifunc.h
index 93f43fb6d0..fda018f61f 100644
--- a/src/interfaces/odbc/pgapifunc.h
+++ b/src/interfaces/odbc/pgapifunc.h
@@ -3,7 +3,8 @@
  *
  *-------
  */
-
+#ifndef	_PG_API_FUNC_H__
+#define	_PG_API_FUNC_H__
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -20,129 +21,129 @@
 #include <sqlext.h>
 #endif
 
-SQLRETURN  SQL_API PGAPI_AllocConnect(SQLHENV EnvironmentHandle,
-           SQLHDBC *ConnectionHandle);
-SQLRETURN  SQL_API PGAPI_AllocEnv(SQLHENV *EnvironmentHandle);
-SQLRETURN  SQL_API PGAPI_AllocStmt(SQLHDBC ConnectionHandle,
-           SQLHSTMT *StatementHandle);
-SQLRETURN  SQL_API PGAPI_BindCol(SQLHSTMT StatementHandle, 
+RETCODE  SQL_API PGAPI_AllocConnect(HENV EnvironmentHandle,
+           HDBC FAR *ConnectionHandle);
+RETCODE  SQL_API PGAPI_AllocEnv(HENV FAR *EnvironmentHandle);
+RETCODE  SQL_API PGAPI_AllocStmt(HDBC ConnectionHandle,
+           HSTMT *StatementHandle);
+RETCODE  SQL_API PGAPI_BindCol(HSTMT StatementHandle, 
 		   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, 
-		   SQLPOINTER TargetValue, SQLINTEGER BufferLength, 
+		   PTR TargetValue, SQLINTEGER BufferLength, 
 	   	   SQLINTEGER *StrLen_or_Ind);
-SQLRETURN  SQL_API PGAPI_Cancel(SQLHSTMT StatementHandle);
-SQLRETURN  SQL_API PGAPI_Columns(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_Cancel(HSTMT StatementHandle);
+RETCODE  SQL_API PGAPI_Columns(HSTMT StatementHandle,
            SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
            SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
            SQLCHAR *TableName, SQLSMALLINT NameLength3,
            SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
-SQLRETURN  SQL_API PGAPI_Connect(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API PGAPI_Connect(HDBC ConnectionHandle,
            SQLCHAR *ServerName, SQLSMALLINT NameLength1,
            SQLCHAR *UserName, SQLSMALLINT NameLength2,
            SQLCHAR *Authentication, SQLSMALLINT NameLength3);
-SQLRETURN  SQL_API PGAPI_DriverConnect(HDBC hdbc, HWND hwnd,
+RETCODE  SQL_API PGAPI_DriverConnect(HDBC hdbc, HWND hwnd,
 	   UCHAR FAR *szConnStrIn, SWORD cbConnStrIn,
 	   UCHAR FAR *szConnStrOut, SWORD cbConnStrOutMax,
 	   SWORD FAR *pcbConnStrOut, UWORD fDriverCompletion);
-SQLRETURN SQL_API PGAPI_BrowseConnect(SQLHDBC hdbc,
+RETCODE SQL_API PGAPI_BrowseConnect(HDBC hdbc,
 	  SQLCHAR *szConnStrIn, SQLSMALLINT cbConnStrIn,
 	  SQLCHAR *szConnStrOut, SQLSMALLINT cbConnStrOutMax,
 	  SQLSMALLINT *pcbConnStrOut);
-SQLRETURN  SQL_API PGAPI_DataSources(SQLHENV EnvironmentHandle,
+RETCODE  SQL_API PGAPI_DataSources(HENV EnvironmentHandle,
            SQLUSMALLINT Direction, SQLCHAR *ServerName,
            SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
            SQLCHAR *Description, SQLSMALLINT BufferLength2,
            SQLSMALLINT *NameLength2);
-SQLRETURN  SQL_API PGAPI_DescribeCol(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_DescribeCol(HSTMT StatementHandle,
            SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
            SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
            SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
            SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
-SQLRETURN  SQL_API PGAPI_Disconnect(SQLHDBC ConnectionHandle);
-SQLRETURN  SQL_API PGAPI_Error(SQLHENV EnvironmentHandle,
-           SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_Disconnect(HDBC ConnectionHandle);
+RETCODE  SQL_API PGAPI_Error(HENV EnvironmentHandle,
+           HDBC ConnectionHandle, HSTMT StatementHandle,
            SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
            SQLCHAR *MessageText, SQLSMALLINT BufferLength,
            SQLSMALLINT *TextLength);
-SQLRETURN  SQL_API PGAPI_ExecDirect(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_ExecDirect(HSTMT StatementHandle,
            SQLCHAR *StatementText, SQLINTEGER TextLength);
-SQLRETURN  SQL_API PGAPI_Execute(SQLHSTMT StatementHandle);
-SQLRETURN  SQL_API PGAPI_Fetch(SQLHSTMT StatementHandle);
-SQLRETURN  SQL_API PGAPI_FreeConnect(SQLHDBC ConnectionHandle);
-SQLRETURN  SQL_API PGAPI_FreeEnv(SQLHENV EnvironmentHandle);
-SQLRETURN  SQL_API PGAPI_FreeStmt(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_Execute(HSTMT StatementHandle);
+RETCODE  SQL_API PGAPI_Fetch(HSTMT StatementHandle);
+RETCODE  SQL_API PGAPI_FreeConnect(HDBC ConnectionHandle);
+RETCODE  SQL_API PGAPI_FreeEnv(HENV EnvironmentHandle);
+RETCODE  SQL_API PGAPI_FreeStmt(HSTMT StatementHandle,
            SQLUSMALLINT Option);
-SQLRETURN  SQL_API PGAPI_GetConnectOption(SQLHDBC ConnectionHandle,
-           SQLUSMALLINT Option, SQLPOINTER Value);
-SQLRETURN  SQL_API PGAPI_GetCursorName(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_GetConnectOption(HDBC ConnectionHandle,
+           SQLUSMALLINT Option, PTR Value);
+RETCODE  SQL_API PGAPI_GetCursorName(HSTMT StatementHandle,
            SQLCHAR *CursorName, SQLSMALLINT BufferLength,
            SQLSMALLINT *NameLength);
-SQLRETURN  SQL_API PGAPI_GetData(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_GetData(HSTMT StatementHandle,
            SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
-           SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+           PTR TargetValue, SQLINTEGER BufferLength,
            SQLINTEGER *StrLen_or_Ind);
-SQLRETURN  SQL_API PGAPI_GetFunctions(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API PGAPI_GetFunctions(HDBC ConnectionHandle,
            SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
-SQLRETURN  SQL_API PGAPI_GetFunctions30(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API PGAPI_GetFunctions30(HDBC ConnectionHandle,
            SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
-SQLRETURN  SQL_API PGAPI_GetInfo(SQLHDBC ConnectionHandle,
-           SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+RETCODE  SQL_API PGAPI_GetInfo(HDBC ConnectionHandle,
+           SQLUSMALLINT InfoType, PTR InfoValue,
            SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
-SQLRETURN  SQL_API PGAPI_GetInfo30(SQLHDBC ConnectionHandle,
-           SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+RETCODE  SQL_API PGAPI_GetInfo30(HDBC ConnectionHandle,
+           SQLUSMALLINT InfoType, PTR InfoValue,
            SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
-SQLRETURN  SQL_API PGAPI_GetStmtOption(SQLHSTMT StatementHandle,
-           SQLUSMALLINT Option, SQLPOINTER Value);
-SQLRETURN  SQL_API PGAPI_GetTypeInfo(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_GetStmtOption(HSTMT StatementHandle,
+           SQLUSMALLINT Option, PTR Value);
+RETCODE  SQL_API PGAPI_GetTypeInfo(HSTMT StatementHandle,
            SQLSMALLINT DataType);
-SQLRETURN  SQL_API PGAPI_NumResultCols(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_NumResultCols(HSTMT StatementHandle,
            SQLSMALLINT *ColumnCount);
-SQLRETURN  SQL_API PGAPI_ParamData(SQLHSTMT StatementHandle,
-           SQLPOINTER *Value);
-SQLRETURN  SQL_API PGAPI_Prepare(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_ParamData(HSTMT StatementHandle,
+           PTR *Value);
+RETCODE  SQL_API PGAPI_Prepare(HSTMT StatementHandle,
            SQLCHAR *StatementText, SQLINTEGER TextLength);
-SQLRETURN  SQL_API PGAPI_PutData(SQLHSTMT StatementHandle,
-           SQLPOINTER Data, SQLINTEGER StrLen_or_Ind);
-SQLRETURN  SQL_API PGAPI_RowCount(SQLHSTMT StatementHandle, 
+RETCODE  SQL_API PGAPI_PutData(HSTMT StatementHandle,
+           PTR Data, SQLINTEGER StrLen_or_Ind);
+RETCODE  SQL_API PGAPI_RowCount(HSTMT StatementHandle, 
 	   SQLINTEGER *RowCount);
-SQLRETURN  SQL_API PGAPI_SetConnectOption(SQLHDBC ConnectionHandle,
+RETCODE  SQL_API PGAPI_SetConnectOption(HDBC ConnectionHandle,
            SQLUSMALLINT Option, SQLUINTEGER Value);
-SQLRETURN  SQL_API PGAPI_SetCursorName(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_SetCursorName(HSTMT StatementHandle,
            SQLCHAR *CursorName, SQLSMALLINT NameLength);
-SQLRETURN  SQL_API PGAPI_SetParam(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_SetParam(HSTMT StatementHandle,
            SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
            SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
-           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLSMALLINT ParameterScale, PTR ParameterValue,
            SQLINTEGER *StrLen_or_Ind);
-SQLRETURN  SQL_API PGAPI_SetStmtOption(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_SetStmtOption(HSTMT StatementHandle,
            SQLUSMALLINT Option, SQLUINTEGER Value);
-SQLRETURN  SQL_API PGAPI_SpecialColumns(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_SpecialColumns(HSTMT StatementHandle,
            SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
            SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
            SQLSMALLINT NameLength2, SQLCHAR *TableName,
            SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
            SQLUSMALLINT Nullable);
-SQLRETURN  SQL_API PGAPI_Statistics(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_Statistics(HSTMT StatementHandle,
            SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
            SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
            SQLCHAR *TableName, SQLSMALLINT NameLength3,
            SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
-SQLRETURN  SQL_API PGAPI_Tables(SQLHSTMT StatementHandle,
+RETCODE  SQL_API PGAPI_Tables(HSTMT StatementHandle,
            SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
            SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
            SQLCHAR *TableName, SQLSMALLINT NameLength3,
            SQLCHAR *TableType, SQLSMALLINT NameLength4);
-SQLRETURN  SQL_API PGAPI_Transact(SQLHENV EnvironmentHandle,
-           SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
-SQLRETURN SQL_API PGAPI_ColAttributes(
-	   SQLHSTMT hstmt,
+RETCODE  SQL_API PGAPI_Transact(HENV EnvironmentHandle,
+           HDBC ConnectionHandle, SQLUSMALLINT CompletionType);
+RETCODE SQL_API PGAPI_ColAttributes(
+	   HSTMT hstmt,
 	   SQLUSMALLINT icol,
 	   SQLUSMALLINT fDescType,
-	   SQLPOINTER  rgbDesc,
+	   PTR  rgbDesc,
 	   SQLSMALLINT cbDescMax,
 	   SQLSMALLINT *pcbDesc,
 	   SQLINTEGER *pfDesc);
-SQLRETURN SQL_API PGAPI_ColumnPrivileges(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_ColumnPrivileges(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -151,21 +152,21 @@ SQLRETURN SQL_API PGAPI_ColumnPrivileges(
     SQLSMALLINT        cbTableName,
     SQLCHAR 		  *szColumnName,
     SQLSMALLINT        cbColumnName);
-SQLRETURN SQL_API PGAPI_DescribeParam(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_DescribeParam(
+    HSTMT           hstmt,
     SQLUSMALLINT       ipar,
     SQLSMALLINT 	  *pfSqlType,
     SQLUINTEGER 	  *pcbParamDef,
     SQLSMALLINT 	  *pibScale,
     SQLSMALLINT 	  *pfNullable);
-SQLRETURN SQL_API PGAPI_ExtendedFetch(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_ExtendedFetch(
+    HSTMT           hstmt,
     SQLUSMALLINT       fFetchType,
     SQLINTEGER         irow,
     SQLUINTEGER 	  *pcrow,
     SQLUSMALLINT 	  *rgfRowStatus);
-SQLRETURN SQL_API PGAPI_ForeignKeys(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_ForeignKeys(
+    HSTMT           hstmt,
     SQLCHAR 		  *szPkCatalogName,
     SQLSMALLINT        cbPkCatalogName,
     SQLCHAR 		  *szPkSchemaName,
@@ -178,32 +179,32 @@ SQLRETURN SQL_API PGAPI_ForeignKeys(
     SQLSMALLINT        cbFkSchemaName,
     SQLCHAR 		  *szFkTableName,
     SQLSMALLINT        cbFkTableName);
-SQLRETURN SQL_API PGAPI_MoreResults(
-    SQLHSTMT           hstmt);
-SQLRETURN SQL_API PGAPI_NativeSql(
-    SQLHDBC            hdbc,
+RETCODE SQL_API PGAPI_MoreResults(
+    HSTMT           hstmt);
+RETCODE SQL_API PGAPI_NativeSql(
+    HDBC            hdbc,
     SQLCHAR 		  *szSqlStrIn,
     SQLINTEGER         cbSqlStrIn,
     SQLCHAR 		  *szSqlStr,
     SQLINTEGER         cbSqlStrMax,
     SQLINTEGER 		  *pcbSqlStr);
-SQLRETURN SQL_API PGAPI_NumParams(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_NumParams(
+    HSTMT           hstmt,
     SQLSMALLINT 	  *pcpar);
-SQLRETURN SQL_API PGAPI_ParamOptions(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_ParamOptions(
+    HSTMT           hstmt,
     SQLUINTEGER        crow,
     SQLUINTEGER 	  *pirow);
-SQLRETURN SQL_API PGAPI_PrimaryKeys(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_PrimaryKeys(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
     SQLSMALLINT        cbSchemaName,
     SQLCHAR 		  *szTableName,
     SQLSMALLINT        cbTableName);
-SQLRETURN SQL_API PGAPI_ProcedureColumns(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_ProcedureColumns(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
@@ -212,37 +213,41 @@ SQLRETURN SQL_API PGAPI_ProcedureColumns(
     SQLSMALLINT        cbProcName,
     SQLCHAR 		  *szColumnName,
     SQLSMALLINT        cbColumnName);
-SQLRETURN SQL_API PGAPI_Procedures(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_Procedures(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
     SQLSMALLINT        cbSchemaName,
     SQLCHAR 		  *szProcName,
     SQLSMALLINT        cbProcName);
-SQLRETURN SQL_API PGAPI_SetPos(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_SetPos(
+    HSTMT           hstmt,
     SQLUSMALLINT       irow,
     SQLUSMALLINT       fOption,
     SQLUSMALLINT       fLock);
-SQLRETURN SQL_API PGAPI_TablePrivileges(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_TablePrivileges(
+    HSTMT           hstmt,
     SQLCHAR 		  *szCatalogName,
     SQLSMALLINT        cbCatalogName,
     SQLCHAR 		  *szSchemaName,
     SQLSMALLINT        cbSchemaName,
     SQLCHAR 		  *szTableName,
     SQLSMALLINT        cbTableName);
-SQLRETURN SQL_API PGAPI_BindParameter(
-    SQLHSTMT           hstmt,
+RETCODE SQL_API PGAPI_BindParameter(
+    HSTMT           hstmt,
     SQLUSMALLINT       ipar,
     SQLSMALLINT        fParamType,
     SQLSMALLINT        fCType,
     SQLSMALLINT        fSqlType,
     SQLUINTEGER        cbColDef,
     SQLSMALLINT        ibScale,
-    SQLPOINTER         rgbValue,
+    PTR         rgbValue,
     SQLINTEGER         cbValueMax,
     SQLINTEGER 		  *pcbValue);
-
-/* #include "pg_converr_check.h" */
+RETCODE SQL_API PGAPI_SetScrollOptions(
+	HSTMT hstmt,
+	UWORD fConcurrency,
+	SDWORD crowKeyset,
+	UWORD crowRowset);
+#endif /* define_PG_API_FUNC_H__ */
diff --git a/src/interfaces/odbc/pgtypes.c b/src/interfaces/odbc/pgtypes.c
index 83f9574d2a..ff640776f8 100644
--- a/src/interfaces/odbc/pgtypes.c
+++ b/src/interfaces/odbc/pgtypes.c
@@ -697,6 +697,9 @@ pgtype_length(StatementClass *stmt, Int4 type, int col, int handle_unknown_size_
 			return 16;
 
 			/* Character types (and NUMERIC) use the default precision */
+		case PG_TYPE_VARCHAR:
+		case PG_TYPE_BPCHAR:
+			return 2 * pgtype_precision(stmt, type, col, handle_unknown_size_as);
 		default:
 			return pgtype_precision(stmt, type, col, handle_unknown_size_as);
 	}
diff --git a/src/interfaces/odbc/statement.c b/src/interfaces/odbc/statement.c
index 4459bdb15d..3ab683d4a0 100644
--- a/src/interfaces/odbc/statement.c
+++ b/src/interfaces/odbc/statement.c
@@ -714,13 +714,15 @@ SC_fetch(StatementClass *self)
 	static char *func = "SC_fetch";
 	QResultClass *res = self->result;
 	int			retval,
-				result, updret;
+				result;
+#ifdef	DRIVER_CURSOR_IMPLEMENT
+	int		updret;
+#endif /* DRIVER_CURSOR_IMPLEMENT */
 	Int2		num_cols,
 				lf;
 	Oid			type;
 	char	   *value;
 	ColumnInfoClass *ci;
-extern	WORD	addrow;
 	/* TupleField *tupleField; */
 
 	self->last_fetch_count = 0;