summaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/pgapi30.c
diff options
context:
space:
mode:
authorHiroshi Inoue <inoue@tpf.co.jp>2002-03-08 08:52:55 +0000
committerHiroshi Inoue <inoue@tpf.co.jp>2002-03-08 08:52:55 +0000
commit4b47467a6b0d86162dd8814b8ab923aba982fb34 (patch)
tree85fea3bf0475716f35d440468eda620769081bac /src/interfaces/odbc/pgapi30.c
parent21f8aa396fa833ac95cff4e85c5281fd24fd1632 (diff)
1) Implement SQLParamOptions().
2) Handle Multiple results and implement SQLMoreResult(). 3) Improve multibyte handling thanks to Eiji Tokuya. 4) Add new options. LF <-> CR/LF converion. TRUE is -1 (for VB). 5) Introduce unicode(UCS-2) support. 6) Reduce the length of connection strings. 7) Improve SQLError, SQLGetDiagRec(ODBC 3.0). 8) Implement SQLTablePrivileges(). 9) Miscellaneous changes for ODBC 3.0 support.
Diffstat (limited to 'src/interfaces/odbc/pgapi30.c')
-rw-r--r--src/interfaces/odbc/pgapi30.c95
1 files changed, 75 insertions, 20 deletions
diff --git a/src/interfaces/odbc/pgapi30.c b/src/interfaces/odbc/pgapi30.c
index 9ee8c58983b..6e4c575e31e 100644
--- a/src/interfaces/odbc/pgapi30.c
+++ b/src/interfaces/odbc/pgapi30.c
@@ -36,37 +36,92 @@ PGAPI_GetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
RETCODE ret;
static const char *func = "PGAPI_GetDiagRec";
- mylog("%s entering ", func);
+ mylog("%s entering rec=%d", func, RecNumber);
switch (HandleType)
{
case SQL_HANDLE_ENV:
- ret = PGAPI_Error(Handle, NULL, NULL, Sqlstate, NativeError,
- MessageText, BufferLength, TextLength);
+ ret = PGAPI_EnvError(Handle, RecNumber, Sqlstate,
+ NativeError, MessageText,
+ BufferLength, TextLength, 0);
break;
case SQL_HANDLE_DBC:
- ret = PGAPI_Error(NULL, Handle, NULL, Sqlstate, NativeError,
- MessageText, BufferLength, TextLength);
+ ret = PGAPI_ConnectError(Handle, RecNumber, Sqlstate,
+ NativeError, MessageText, BufferLength,
+ TextLength, 0);
break;
case SQL_HANDLE_STMT:
- ret = PGAPI_Error(NULL, NULL, Handle, Sqlstate, NativeError,
- MessageText, BufferLength, TextLength);
+ ret = PGAPI_StmtError(Handle, RecNumber, Sqlstate,
+ NativeError, MessageText, BufferLength,
+ TextLength, 0);
break;
default:
ret = SQL_ERROR;
}
- if (ret == SQL_SUCCESS_WITH_INFO &&
- BufferLength == 0 &&
- *TextLength)
- {
- SQLSMALLINT BufferLength = *TextLength + 4;
- SQLCHAR *MessageText = malloc(BufferLength);
+ mylog("%s exiting %d\n", func, ret);
+ return ret;
+}
+
+RETCODE SQL_API
+PGAPI_GetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
+ SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
+ PTR DiagInfoPtr, SQLSMALLINT BufferLength,
+ SQLSMALLINT *StringLengthPtr)
+{
+ RETCODE ret = SQL_SUCCESS;
+ static const char *func = "PGAPI_GetDiagField";
- ret = PGAPI_GetDiagRec(HandleType, Handle, RecNumber, Sqlstate,
- NativeError, MessageText, BufferLength,
- TextLength);
- free(MessageText);
+ mylog("%s entering rec=%d", func, RecNumber);
+ switch (HandleType)
+ {
+ case SQL_HANDLE_ENV:
+ switch (DiagIdentifier)
+ {
+ case SQL_DIAG_CLASS_ORIGIN:
+ case SQL_DIAG_SUBCLASS_ORIGIN:
+ case SQL_DIAG_CONNECTION_NAME:
+ case SQL_DIAG_MESSAGE_TEXT:
+ case SQL_DIAG_NATIVE:
+ case SQL_DIAG_NUMBER:
+ case SQL_DIAG_RETURNCODE:
+ case SQL_DIAG_SERVER_NAME:
+ case SQL_DIAG_SQLSTATE:
+ break;
+ }
+ break;
+ case SQL_HANDLE_DBC:
+ switch (DiagIdentifier)
+ {
+ case SQL_DIAG_CLASS_ORIGIN:
+ case SQL_DIAG_SUBCLASS_ORIGIN:
+ case SQL_DIAG_CONNECTION_NAME:
+ case SQL_DIAG_MESSAGE_TEXT:
+ case SQL_DIAG_NATIVE:
+ case SQL_DIAG_NUMBER:
+ case SQL_DIAG_RETURNCODE:
+ case SQL_DIAG_SERVER_NAME:
+ case SQL_DIAG_SQLSTATE:
+ break;
+ }
+ break;
+ case SQL_HANDLE_STMT:
+ switch (DiagIdentifier)
+ {
+ case SQL_DIAG_CLASS_ORIGIN:
+ case SQL_DIAG_SUBCLASS_ORIGIN:
+ case SQL_DIAG_CONNECTION_NAME:
+ case SQL_DIAG_MESSAGE_TEXT:
+ case SQL_DIAG_NATIVE:
+ case SQL_DIAG_NUMBER:
+ case SQL_DIAG_RETURNCODE:
+ case SQL_DIAG_SERVER_NAME:
+ case SQL_DIAG_SQLSTATE:
+ break;
+ }
+ break;
+ default:
+ ret = SQL_ERROR;
}
-mylog("%s exiting\n", func);
+ mylog("%s exiting %d\n", func, ret);
return ret;
}
@@ -87,7 +142,7 @@ PGAPI_GetConnectAttr(HDBC ConnectionHandle,
case SQL_ATTR_CONNECTION_TIMEOUT:
case SQL_ATTR_METADATA_ID:
conn->errornumber = STMT_INVALID_OPTION_IDENTIFIER;
- conn->errormsg = "Unsupported connection option (Set)";
+ conn->errormsg = "Unsupported connect attribute (Get)";
return SQL_ERROR;
}
return PGAPI_GetConnectOption(ConnectionHandle, (UWORD) Attribute, Value);
@@ -373,7 +428,7 @@ PGAPI_SetConnectAttr(HDBC ConnectionHandle,
case SQL_ATTR_CONNECTION_TIMEOUT:
case SQL_ATTR_METADATA_ID:
conn->errornumber = STMT_INVALID_OPTION_IDENTIFIER;
- conn->errormsg = "Unsupported connection option (Set)";
+ conn->errormsg = "Unsupported connect attribute (Set)";
return SQL_ERROR;
}
return PGAPI_SetConnectOption(ConnectionHandle, (UWORD) Attribute, (UDWORD) Value);