aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/odbcapi30w.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/odbc/odbcapi30w.c')
-rw-r--r--src/interfaces/odbc/odbcapi30w.c282
1 files changed, 0 insertions, 282 deletions
diff --git a/src/interfaces/odbc/odbcapi30w.c b/src/interfaces/odbc/odbcapi30w.c
deleted file mode 100644
index 8992353b315..00000000000
--- a/src/interfaces/odbc/odbcapi30w.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/*-------
- * Module: odbcapi30w.c
- *
- * Description: This module contains UNICODE routines
- *
- * Classes: n/a
- *
- * API functions: SQLColAttributeW, SQLGetStmtAttrW, SQLSetStmtAttrW,
- SQLSetConnectAttrW, SQLGetConnectAttrW,
- SQLGetDescFieldW, SQLGetDescRecW, SQLGetDiagFieldW,
- SQLGetDiagRecW,
- *-------
- */
-
-#include "psqlodbc.h"
-#include <stdio.h>
-#include <string.h>
-
-#include "pgapifunc.h"
-#include "connection.h"
-#include "statement.h"
-
-
-RETCODE SQL_API SQLGetStmtAttrW(SQLHSTMT hstmt,
- SQLINTEGER fAttribute,
- PTR rgbValue,
- SQLINTEGER cbValueMax,
- SQLINTEGER *pcbValue)
-{
- RETCODE ret;
-
- mylog("[SQLGetStmtAttrW]");
- SC_clear_error((StatementClass *) hstmt);
- ret = PGAPI_GetStmtAttr(hstmt, fAttribute, rgbValue,
- cbValueMax, pcbValue);
- return ret;
-}
-
-RETCODE SQL_API SQLSetStmtAttrW(SQLHSTMT hstmt,
- SQLINTEGER fAttribute,
- PTR rgbValue,
- SQLINTEGER cbValueMax)
-{
- RETCODE ret;
-
- mylog("[SQLSetStmtAttrW]");
- SC_clear_error((StatementClass *) hstmt);
- ret = PGAPI_SetStmtAttr(hstmt, fAttribute, rgbValue,
- cbValueMax);
- return ret;
-}
-
-RETCODE SQL_API SQLGetConnectAttrW(HDBC hdbc,
- SQLINTEGER fAttribute,
- PTR rgbValue,
- SQLINTEGER cbValueMax,
- SQLINTEGER *pcbValue)
-{
- RETCODE ret;
-
- mylog("[SQLGetConnectAttrW]");
- CC_clear_error((ConnectionClass *) hdbc);
- ret = PGAPI_GetConnectAttr(hdbc, fAttribute, rgbValue,
- cbValueMax, pcbValue);
- return ret;
-}
-
-RETCODE SQL_API SQLSetConnectAttrW(HDBC hdbc,
- SQLINTEGER fAttribute,
- PTR rgbValue,
- SQLINTEGER cbValue)
-{
- RETCODE ret;
-
- mylog("[SQLSetConnectAttrW]");
- CC_clear_error((ConnectionClass *) hdbc);
- ret = PGAPI_SetConnectAttr(hdbc, fAttribute, rgbValue,
- cbValue);
- return ret;
-}
-
-/* new function */
-RETCODE SQL_API
-SQLSetDescFieldW(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber,
- SQLSMALLINT FieldIdentifier, PTR Value,
- SQLINTEGER BufferLength)
-{
- RETCODE ret;
- UInt4 vallen;
- char *uval = NULL;
- BOOL val_alloced = FALSE;
-
- mylog("[SQLSetDescFieldW]");
- if (BufferLength > 0)
- {
- switch (FieldIdentifier)
- {
- case SQL_DESC_BASE_COLUMN_NAME:
- case SQL_DESC_BASE_TABLE_NAME:
- case SQL_DESC_CATALOG_NAME:
- case SQL_DESC_LABEL:
- case SQL_DESC_LITERAL_PREFIX:
- case SQL_DESC_LITERAL_SUFFIX:
- case SQL_DESC_LOCAL_TYPE_NAME:
- case SQL_DESC_NAME:
- case SQL_DESC_SCHEMA_NAME:
- case SQL_DESC_TABLE_NAME:
- case SQL_DESC_TYPE_NAME:
- uval = ucs2_to_utf8(Value, BufferLength / 2, &vallen);
- val_alloced = TRUE;
- break;
- }
- }
- if (!val_alloced)
- {
- uval = Value;
- vallen = BufferLength;
- }
- ret = PGAPI_SetDescField(DescriptorHandle, RecNumber, FieldIdentifier,
- uval, vallen);
- if (val_alloced)
- free(uval);
- return ret;
-}
-RETCODE SQL_API
-SQLGetDescFieldW(SQLHDESC hdesc, SQLSMALLINT iRecord, SQLSMALLINT iField,
- PTR rgbValue, SQLINTEGER cbValueMax,
- SQLINTEGER *pcbValue)
-{
- RETCODE ret;
- BOOL alloced = FALSE;
- SQLINTEGER blen, bMax, *pcbV;
- char *rgbV = NULL;
-
- mylog("[SQLGetDescFieldW]");
- switch (iField)
- {
- case SQL_DESC_BASE_COLUMN_NAME:
- case SQL_DESC_BASE_TABLE_NAME:
- case SQL_DESC_CATALOG_NAME:
- case SQL_DESC_LABEL:
- case SQL_DESC_LITERAL_PREFIX:
- case SQL_DESC_LITERAL_SUFFIX:
- case SQL_DESC_LOCAL_TYPE_NAME:
- case SQL_DESC_NAME:
- case SQL_DESC_SCHEMA_NAME:
- case SQL_DESC_TABLE_NAME:
- case SQL_DESC_TYPE_NAME:
- alloced = TRUE;
- bMax = cbValueMax * 3 / 2;
- rgbV = malloc(bMax + 1);
- pcbV = &blen;
- break;
- default:
- rgbV = rgbValue;
- bMax = cbValueMax;
- pcbV = pcbValue;
- break;
- }
- ret = PGAPI_GetDescField(hdesc, iRecord, iField, rgbV, bMax, pcbV);
- if (alloced)
- {
- blen = utf8_to_ucs2(rgbV, blen, (SQLWCHAR *) rgbValue, cbValueMax / 2);
- if (SQL_SUCCESS == ret && blen * 2 > cbValueMax)
- {
- ret = SQL_SUCCESS_WITH_INFO;
- Desc_set_error(hdesc, STMT_TRUNCATED, "The buffer was too small for the rgbDesc.");
- }
- if (pcbValue)
- *pcbValue = blen * 2;
- free(rgbV);
- }
-
- return ret;
-}
-
-RETCODE SQL_API SQLGetDiagRecW(SWORD fHandleType,
- SQLHANDLE handle,
- SQLSMALLINT iRecord,
- SQLWCHAR *szSqlState,
- SQLINTEGER *pfNativeError,
- SQLWCHAR *szErrorMsg,
- SQLSMALLINT cbErrorMsgMax,
- SQLSMALLINT *pcbErrorMsg)
-{
- RETCODE ret;
- SWORD buflen, tlen;
- char *qstr = NULL, *mtxt = NULL;
-
- mylog("[SQLGetDiagRecW]");
- if (szSqlState)
- qstr = malloc(8);
- buflen = 0;
- if (szErrorMsg && cbErrorMsgMax > 0)
- {
- buflen = cbErrorMsgMax;
- mtxt = malloc(buflen);
- }
- ret = PGAPI_GetDiagRec(fHandleType, handle, iRecord, qstr,
- pfNativeError, mtxt, buflen, &tlen);
- if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
- {
- if (qstr)
- utf8_to_ucs2(qstr, strlen(qstr), szSqlState, 6);
- if (mtxt && tlen <= cbErrorMsgMax)
- {
- tlen = utf8_to_ucs2(mtxt, tlen, szErrorMsg, cbErrorMsgMax);
- if (tlen >= cbErrorMsgMax)
- ret = SQL_SUCCESS_WITH_INFO;
- }
- if (pcbErrorMsg)
- *pcbErrorMsg = tlen;
- }
- if (qstr);
- free(qstr);
- if (mtxt)
- free(mtxt);
- return ret;
-}
-
-RETCODE SQL_API SQLColAttributeW(
- HSTMT hstmt,
- SQLUSMALLINT icol,
- SQLUSMALLINT fDescType,
- PTR rgbDesc,
- SQLSMALLINT cbDescMax,
- SQLSMALLINT *pcbDesc,
- SQLINTEGER *pfDesc)
-{
- RETCODE ret;
- BOOL alloced = FALSE;
- SQLSMALLINT *rgbL, blen, bMax;
- char *rgbD = NULL;
-
- mylog("[SQLColAttributeW]");
- SC_clear_error((StatementClass *) hstmt);
- switch (fDescType)
- {
- case SQL_DESC_BASE_COLUMN_NAME:
- case SQL_DESC_BASE_TABLE_NAME:
- case SQL_DESC_CATALOG_NAME:
- case SQL_DESC_LABEL:
- case SQL_DESC_LITERAL_PREFIX:
- case SQL_DESC_LITERAL_SUFFIX:
- case SQL_DESC_LOCAL_TYPE_NAME:
- case SQL_DESC_NAME:
- case SQL_DESC_SCHEMA_NAME:
- case SQL_DESC_TABLE_NAME:
- case SQL_DESC_TYPE_NAME:
- case SQL_COLUMN_NAME:
- alloced = TRUE;
- bMax = cbDescMax * 3 / 2;
- rgbD = malloc(bMax + 1);
- rgbL = &blen;
- break;
- default:
- rgbD = rgbDesc;
- bMax = cbDescMax;
- rgbL = pcbDesc;
- break;
- }
-
- ret = PGAPI_ColAttributes(hstmt, icol, fDescType, rgbD,
- bMax, rgbL, pfDesc);
- if (alloced)
- {
- blen = utf8_to_ucs2(rgbD, blen, (SQLWCHAR *) rgbDesc, cbDescMax / 2);
- if (SQL_SUCCESS == ret && blen * 2 > cbDescMax)
- {
- StatementClass *stmt = (StatementClass *) hstmt;
-
- ret = SQL_SUCCESS_WITH_INFO;
- stmt->errornumber = STMT_TRUNCATED;
- stmt->errormsg = "The buffer was too small for the rgbDesc.";
- }
- if (pcbDesc)
- *pcbDesc = blen * 2;
- free(rgbD);
- }
-
- return ret;
-}