diff options
Diffstat (limited to 'src/interfaces/odbc/odbcapiw.c')
-rwxr-xr-x | src/interfaces/odbc/odbcapiw.c | 626 |
1 files changed, 0 insertions, 626 deletions
diff --git a/src/interfaces/odbc/odbcapiw.c b/src/interfaces/odbc/odbcapiw.c deleted file mode 100755 index ac1e3f28f4e..00000000000 --- a/src/interfaces/odbc/odbcapiw.c +++ /dev/null @@ -1,626 +0,0 @@ -/*------- - * Module: odbcapiw.c - * - * Description: This module contains UNICODE routines - * - * Classes: n/a - * - * API functions: SQLColumnPrivilegesW, SQLColumnsW, - SQLConnectW, SQLDataSourcesW, SQLDescribeColW, - SQLDriverConnectW, SQLExecDirectW, - SQLForeignKeysW, - SQLGetCursorNameW, SQLGetInfoW, SQLNativeSqlW, - SQLPrepareW, SQLPrimaryKeysW, SQLProcedureColumnsW, - SQLProceduresW, SQLSetCursorNameW, - SQLSpecialColumnsW, SQLStatisticsW, SQLTablesW, - SQLTablePrivilegesW, SQLGetTypeInfoW - *------- - */ - -#include "psqlodbc.h" -#include <stdio.h> -#include <string.h> - -#include "pgapifunc.h" -#include "connection.h" -#include "statement.h" - -RETCODE SQL_API SQLColumnsW(HSTMT StatementHandle, - SQLWCHAR *CatalogName, SQLSMALLINT NameLength1, - SQLWCHAR *SchemaName, SQLSMALLINT NameLength2, - SQLWCHAR *TableName, SQLSMALLINT NameLength3, - SQLWCHAR *ColumnName, SQLSMALLINT NameLength4) -{ - RETCODE ret; - char *ctName, *scName, *tbName, *clName; - UInt4 nmlen1, nmlen2, nmlen3, nmlen4; - - mylog("[SQLColumnsW]"); - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3); - clName = ucs2_to_utf8(ColumnName, NameLength4, &nmlen4); - ret = PGAPI_Columns(StatementHandle, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, - clName, (SWORD) nmlen4, 0); - if (ctName) - free(ctName); - if (scName); - free(scName); - if (tbName) - free(tbName); - if (clName); - free(clName); - return ret; -} - - -RETCODE SQL_API SQLConnectW(HDBC ConnectionHandle, - SQLWCHAR *ServerName, SQLSMALLINT NameLength1, - SQLWCHAR *UserName, SQLSMALLINT NameLength2, - SQLWCHAR *Authentication, SQLSMALLINT NameLength3) -{ - char *svName, *usName, *auth; - UInt4 nmlen1, nmlen2, nmlen3; - RETCODE ret; - - mylog("[SQLConnectW]"); - ((ConnectionClass *) ConnectionHandle)->unicode = 1; - svName = ucs2_to_utf8(ServerName, NameLength1, &nmlen1); - usName = ucs2_to_utf8(UserName, NameLength2, &nmlen2); - auth = ucs2_to_utf8(Authentication, NameLength3, &nmlen3); - ret = PGAPI_Connect(ConnectionHandle, svName, (SWORD) nmlen1, - usName, (SWORD) nmlen2, auth, (SWORD) nmlen3); - if (svName); - free(svName); - if (usName); - free(usName); - if (auth); - free(auth); - return ret; -} - -RETCODE SQL_API SQLDriverConnectW(HDBC hdbc, - HWND hwnd, - SQLWCHAR *szConnStrIn, - SWORD cbConnStrIn, - SQLWCHAR *szConnStrOut, - SWORD cbConnStrOutMax, - SWORD FAR *pcbConnStrOut, - UWORD fDriverCompletion) -{ - char *szIn, *szOut; - UInt4 inlen, obuflen; - SWORD olen; - RETCODE ret; - - mylog("[SQLDriverConnectW]"); - ((ConnectionClass *) hdbc)->unicode = 1; - szIn = ucs2_to_utf8(szConnStrIn, cbConnStrIn, &inlen); - obuflen = cbConnStrOutMax + 1; - szOut = malloc(obuflen); - ret = PGAPI_DriverConnect(hdbc, hwnd, szIn, (SWORD) inlen, - szOut, cbConnStrOutMax, &olen, fDriverCompletion); - if (ret != SQL_ERROR) - { - UInt4 outlen = utf8_to_ucs2(szOut, olen, szConnStrOut, cbConnStrOutMax); - if (pcbConnStrOut) - *pcbConnStrOut = outlen; - } - free(szOut); - if (szIn); - free(szIn); - return ret; -} -RETCODE SQL_API SQLBrowseConnectW( - HDBC hdbc, - SQLWCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, - SQLWCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut) -{ - char *szIn, *szOut; - UInt4 inlen, obuflen; - SWORD olen; - RETCODE ret; - - mylog("[SQLBrowseConnectW]"); - ((ConnectionClass *) hdbc)->unicode = 1; - szIn = ucs2_to_utf8(szConnStrIn, cbConnStrIn, &inlen); - obuflen = cbConnStrOutMax + 1; - szOut = malloc(obuflen); - ret = PGAPI_BrowseConnect(hdbc, szIn, (SWORD) inlen, - szOut, cbConnStrOutMax, &olen); - if (ret != SQL_ERROR) - { - UInt4 outlen = utf8_to_ucs2(szOut, olen, szConnStrOut, cbConnStrOutMax); - if (pcbConnStrOut) - *pcbConnStrOut = outlen; - } - free(szOut); - if (szIn); - free(szIn); - return ret; -} - -RETCODE SQL_API SQLDataSourcesW(HENV EnvironmentHandle, - SQLUSMALLINT Direction, SQLWCHAR *ServerName, - SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1, - SQLWCHAR *Description, SQLSMALLINT BufferLength2, - SQLSMALLINT *NameLength2) -{ - mylog("[SQLDataSourcesW]"); - /* - return PGAPI_DataSources(EnvironmentHandle, Direction, ServerName, - BufferLength1, NameLength1, Description, BufferLength2, - NameLength2); - */ - return SQL_ERROR; -} - -RETCODE SQL_API SQLDescribeColW(HSTMT StatementHandle, - SQLUSMALLINT ColumnNumber, SQLWCHAR *ColumnName, - SQLSMALLINT BufferLength, SQLSMALLINT *NameLength, - SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize, - SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable) -{ - RETCODE ret; - SWORD buflen, nmlen; - char *clName; - - mylog("[SQLDescribeColW]"); - buflen = BufferLength * 3 + 1; - clName = malloc(buflen); - ret = PGAPI_DescribeCol(StatementHandle, ColumnNumber, - clName, buflen, &nmlen, DataType, ColumnSize, - DecimalDigits, Nullable); - if (ret == SQL_SUCCESS) - { - UInt4 nmcount = utf8_to_ucs2(clName, nmlen, ColumnName, BufferLength); - if (nmcount > (UInt4) BufferLength) - { - StatementClass *stmt = (StatementClass *) StatementHandle; - ret = SQL_SUCCESS_WITH_INFO; - stmt->errornumber = STMT_TRUNCATED; - stmt->errormsg = "Column name too large"; - } - if (NameLength) - *NameLength = nmcount; - } - free(clName); - return ret; -} - -RETCODE SQL_API SQLExecDirectW(HSTMT StatementHandle, - SQLWCHAR *StatementText, SQLINTEGER TextLength) -{ - RETCODE ret; - char *stxt; - UInt4 slen; - - mylog("[SQLExecDirectW]"); - stxt = ucs2_to_utf8(StatementText, TextLength, &slen); - ret = PGAPI_ExecDirect(StatementHandle, stxt, slen); - if (stxt); - free(stxt); - return ret; -} - -RETCODE SQL_API SQLGetCursorNameW(HSTMT StatementHandle, - SQLWCHAR *CursorName, SQLSMALLINT BufferLength, - SQLSMALLINT *NameLength) -{ - RETCODE ret; - char *crName; - SWORD clen, buflen; - - mylog("[SQLGetCursorNameW]"); - buflen = BufferLength * 3 + 1; - crName = malloc(buflen); - ret = PGAPI_GetCursorName(StatementHandle, crName, buflen, &clen); - if (ret == SQL_SUCCESS) - { - UInt4 nmcount = utf8_to_ucs2(crName, (Int4) clen, CursorName, BufferLength); - if (nmcount > (UInt4) BufferLength) - { - StatementClass *stmt = (StatementClass *) StatementHandle; - ret = SQL_SUCCESS_WITH_INFO; - stmt->errornumber = STMT_TRUNCATED; - stmt->errormsg = "Cursor name too large"; - } - if (NameLength) - *NameLength = utf8_to_ucs2(crName, (Int4) clen, CursorName, BufferLength); - } - free(crName); - return ret; -} - -RETCODE SQL_API SQLGetInfoW(HDBC ConnectionHandle, - SQLUSMALLINT InfoType, PTR InfoValue, - SQLSMALLINT BufferLength, SQLSMALLINT *StringLength) -{ - ConnectionClass *conn = (ConnectionClass *) ConnectionHandle; - RETCODE ret; - - conn->unicode = 1; - CC_clear_error(conn); -#if (ODBCVER >= 0x0300) - mylog("[SQLGetInfoW(30)]"); - if ((ret = PGAPI_GetInfo(ConnectionHandle, InfoType, InfoValue, - BufferLength, StringLength)) == SQL_ERROR) - { - if (conn->driver_version >= 0x0300) - { - CC_clear_error(conn); - ret = PGAPI_GetInfo30(ConnectionHandle, InfoType, InfoValue, - BufferLength, StringLength); - } - } - if (SQL_ERROR == ret) - CC_log_error("SQLGetInfoW(30)", "", conn); -#else - mylog("[SQLGetInfoW]"); - ret = PGAPI_GetInfo(ConnectionHandle, InfoType, InfoValue, - BufferLength, StringLength); - if (SQL_ERROR == ret) - CC_log_error("SQLGetInfoW", "", conn); -#endif - return ret; -} - -RETCODE SQL_API SQLPrepareW(HSTMT StatementHandle, - SQLWCHAR *StatementText, SQLINTEGER TextLength) -{ - RETCODE ret; - char *stxt; - UInt4 slen; - - mylog("[SQLPrepareW]"); - stxt = ucs2_to_utf8(StatementText, TextLength, &slen); - ret = PGAPI_Prepare(StatementHandle, stxt, slen); - if (stxt); - free(stxt); - return ret; -} - -RETCODE SQL_API SQLSetCursorNameW(HSTMT StatementHandle, - SQLWCHAR *CursorName, SQLSMALLINT NameLength) -{ - RETCODE ret; - char *crName; - UInt4 nlen; - - mylog("[SQLSetCursorNameW]"); - crName = ucs2_to_utf8(CursorName, NameLength, &nlen); - ret = PGAPI_SetCursorName(StatementHandle, crName, (SWORD) nlen); - if (crName); - free(crName); - return ret; -} - -RETCODE SQL_API SQLSpecialColumnsW(HSTMT StatementHandle, - SQLUSMALLINT IdentifierType, SQLWCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLWCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLWCHAR *TableName, - SQLSMALLINT NameLength3, SQLUSMALLINT Scope, - SQLUSMALLINT Nullable) -{ - RETCODE ret; - char *ctName, *scName, *tbName; - UInt4 nmlen1, nmlen2, nmlen3; - - mylog("[SQLSpecialColumnsW]"); - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3); - ret = PGAPI_SpecialColumns(StatementHandle, IdentifierType, ctName, - (SWORD) nmlen1, scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, - Scope, Nullable); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - return ret; -} - -RETCODE SQL_API SQLStatisticsW(HSTMT StatementHandle, - SQLWCHAR *CatalogName, SQLSMALLINT NameLength1, - SQLWCHAR *SchemaName, SQLSMALLINT NameLength2, - SQLWCHAR *TableName, SQLSMALLINT NameLength3, - SQLUSMALLINT Unique, SQLUSMALLINT Reserved) -{ - RETCODE ret; - char *ctName, *scName, *tbName; - UInt4 nmlen1, nmlen2, nmlen3; - - mylog("[SQLStatisticsW]"); - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3); - return PGAPI_Statistics(StatementHandle, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, Unique, - Reserved); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - return ret; -} - -RETCODE SQL_API SQLTablesW(HSTMT StatementHandle, - SQLWCHAR *CatalogName, SQLSMALLINT NameLength1, - SQLWCHAR *SchemaName, SQLSMALLINT NameLength2, - SQLWCHAR *TableName, SQLSMALLINT NameLength3, - SQLWCHAR *TableType, SQLSMALLINT NameLength4) -{ - RETCODE ret; - char *ctName, *scName, *tbName, *tbType; - UInt4 nmlen1, nmlen2, nmlen3, nmlen4; - - mylog("[SQLTablesW]"); - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3); - tbType = ucs2_to_utf8(TableType, NameLength4, &nmlen4); - return PGAPI_Tables(StatementHandle, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, - tbType, (SWORD) nmlen4); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - if (tbType); - free(tbType); - return ret; -} - -RETCODE SQL_API SQLColumnPrivilegesW( - HSTMT hstmt, - SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLWCHAR *szTableName, - SQLSMALLINT cbTableName, - SQLWCHAR *szColumnName, - SQLSMALLINT cbColumnName) -{ - RETCODE ret; - char *ctName, *scName, *tbName, *clName; - UInt4 nmlen1, nmlen2, nmlen3, nmlen4; - - mylog("[SQLColumnPrivilegesW]"); - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2); - tbName = ucs2_to_utf8(szTableName, cbTableName, &nmlen3); - clName = ucs2_to_utf8(szColumnName, cbColumnName, &nmlen4); - ret = PGAPI_ColumnPrivileges(hstmt, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, - clName, (SWORD) nmlen4); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - if (clName); - free(clName); - return ret; -} - -RETCODE SQL_API SQLForeignKeysW( - HSTMT hstmt, - SQLWCHAR *szPkCatalogName, - SQLSMALLINT cbPkCatalogName, - SQLWCHAR *szPkSchemaName, - SQLSMALLINT cbPkSchemaName, - SQLWCHAR *szPkTableName, - SQLSMALLINT cbPkTableName, - SQLWCHAR *szFkCatalogName, - SQLSMALLINT cbFkCatalogName, - SQLWCHAR *szFkSchemaName, - SQLSMALLINT cbFkSchemaName, - SQLWCHAR *szFkTableName, - SQLSMALLINT cbFkTableName) -{ - RETCODE ret; - char *ctName, *scName, *tbName, *fkctName, *fkscName, *fktbName; - UInt4 nmlen1, nmlen2, nmlen3, nmlen4, nmlen5, nmlen6; - - mylog("[SQLForeignKeysW]"); - ctName = ucs2_to_utf8(szPkCatalogName, cbPkCatalogName, &nmlen1); - scName = ucs2_to_utf8(szPkSchemaName, cbPkSchemaName, &nmlen2); - tbName = ucs2_to_utf8(szPkTableName, cbPkTableName, &nmlen3); - fkctName = ucs2_to_utf8(szFkCatalogName, cbFkCatalogName, &nmlen4); - fkscName = ucs2_to_utf8(szFkSchemaName, cbFkSchemaName, &nmlen5); - fktbName = ucs2_to_utf8(szFkTableName, cbFkTableName, &nmlen6); - ret = PGAPI_ForeignKeys(hstmt, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, - fkctName, (SWORD) nmlen4, fkscName, (SWORD) nmlen5, - fktbName, (SWORD) nmlen6); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - if (fkctName); - free(fkctName); - if (fkscName); - free(fkscName); - if (fktbName); - free(fktbName); - return ret; -} - -RETCODE SQL_API SQLNativeSqlW( - HDBC hdbc, - SQLWCHAR *szSqlStrIn, - SQLINTEGER cbSqlStrIn, - SQLWCHAR *szSqlStr, - SQLINTEGER cbSqlStrMax, - SQLINTEGER *pcbSqlStr) -{ - RETCODE ret; - char *szIn, *szOut; - UInt4 slen; - SQLINTEGER buflen, olen; - - mylog("[SQLNativeSqlW]"); - ((ConnectionClass *) hdbc)->unicode = 1; - szIn = ucs2_to_utf8(szSqlStrIn, cbSqlStrIn, &slen); - buflen = 3 * cbSqlStrMax + 1; - szOut = malloc(buflen); - ret = PGAPI_NativeSql(hdbc, szIn, (SQLINTEGER) slen, - szOut, buflen, &olen); - if (szIn); - free(szIn); - if (ret == SQL_SUCCESS) - { - UInt4 szcount = utf8_to_ucs2(szOut, olen, szSqlStr, cbSqlStrMax); - if (szcount > (UInt4) cbSqlStrMax) - { - ConnectionClass *conn = (ConnectionClass *) hdbc; - - ret = SQL_SUCCESS_WITH_INFO; - conn->errornumber = CONN_TRUNCATED; - conn->errormsg = "Sql string too large"; - } - if (pcbSqlStr) - *pcbSqlStr = szcount; - } - free(szOut); - return ret; -} - -RETCODE SQL_API SQLPrimaryKeysW( - HSTMT hstmt, - SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLWCHAR *szTableName, - SQLSMALLINT cbTableName) -{ - RETCODE ret; - char *ctName, *scName, *tbName; - UInt4 nmlen1, nmlen2, nmlen3; - - mylog("[SQLPrimaryKeysW]"); - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2); - tbName = ucs2_to_utf8(szTableName, cbTableName, &nmlen3); - return PGAPI_PrimaryKeys(hstmt, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - return ret; -} - -RETCODE SQL_API SQLProcedureColumnsW( - HSTMT hstmt, - SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLWCHAR *szProcName, - SQLSMALLINT cbProcName, - SQLWCHAR *szColumnName, - SQLSMALLINT cbColumnName) -{ - RETCODE ret; - char *ctName, *scName, *prName, *clName; - UInt4 nmlen1, nmlen2, nmlen3, nmlen4; - - mylog("[SQLProcedureColumnsW]"); - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2); - prName = ucs2_to_utf8(szProcName, cbProcName, &nmlen3); - clName = ucs2_to_utf8(szColumnName, cbColumnName, &nmlen4); - ret = PGAPI_ProcedureColumns(hstmt, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, prName, (SWORD) nmlen3, - clName, (SWORD) nmlen4); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (prName); - free(prName); - if (clName); - free(clName); - return ret; -} - -RETCODE SQL_API SQLProceduresW( - HSTMT hstmt, - SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLWCHAR *szProcName, - SQLSMALLINT cbProcName) -{ - RETCODE ret; - char *ctName, *scName, *prName; - UInt4 nmlen1, nmlen2, nmlen3; - - mylog("[SQLProceduresW]"); - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2); - prName = ucs2_to_utf8(szProcName, cbProcName, &nmlen3); - ret = PGAPI_Procedures(hstmt, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, prName, (SWORD) nmlen3); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (prName); - free(prName); - return ret; -} - -RETCODE SQL_API SQLTablePrivilegesW( - HSTMT hstmt, - SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLWCHAR *szTableName, - SQLSMALLINT cbTableName) -{ - RETCODE ret; - char *ctName, *scName, *tbName; - UInt4 nmlen1, nmlen2, nmlen3; - - mylog("[SQLTablePrivilegesW]"); - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2); - tbName = ucs2_to_utf8(szTableName, cbTableName, &nmlen3); - ret = PGAPI_TablePrivileges(hstmt, ctName, (SWORD) nmlen1, - scName, (SWORD) nmlen2, tbName, (SWORD) nmlen3, 0); - if (ctName); - free(ctName); - if (scName); - free(scName); - if (tbName); - free(tbName); - return ret; -} - -RETCODE SQL_API SQLGetTypeInfoW( - SQLHSTMT StatementHandle, - SQLSMALLINT DataType) -{ - return PGAPI_GetTypeInfo(StatementHandle, DataType); -} |