You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by ry...@apache.org on 2016/12/19 01:52:59 UTC
[2/3] incubator-trafodion git commit: [TRAFODION-1262]ODBC:Varchar
col operation fails use macro instead of 0x7fff and fix trancation of charset
conv in unixodbc
[TRAFODION-1262]ODBC:Varchar col operation fails
use macro instead of 0x7fff and fix trancation of charset conv in unixodbc
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/e0cf313f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/e0cf313f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/e0cf313f
Branch: refs/heads/master
Commit: e0cf313fe755538860d2cad4a204e1f182654014
Parents: c4a39d4
Author: rwbzx <xi...@esgyn.cn>
Authored: Fri Dec 2 18:18:03 2016 +0800
Committer: rwbzx <xi...@esgyn.cn>
Committed: Fri Dec 2 18:18:03 2016 +0800
----------------------------------------------------------------------
core/conn/unixodbc/odbc/odbcclient/unixcli/cli/cdesc.cpp | 4 ++--
.../unixodbc/odbc/odbcclient/unixcli/cli/charsetconv.cpp | 4 ++--
.../unixodbc/odbc/odbcclient/unixcli/cli/ctosqlconv.cpp | 10 +++++-----
win-odbc64/odbcclient/drvr35/cdesc.cpp | 4 ++--
win-odbc64/odbcclient/drvr35/ctosqlconv.cpp | 10 +++++-----
win-odbc64/odbcclient/drvr35/sqltocconv.cpp | 3 +++
6 files changed, 19 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e0cf313f/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/cdesc.cpp
----------------------------------------------------------------------
diff --git a/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/cdesc.cpp b/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/cdesc.cpp
index b844519..96ad330 100644
--- a/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/cdesc.cpp
+++ b/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/cdesc.cpp
@@ -598,14 +598,14 @@ unsigned long CDescRec::setDescRec(short DescMode, SQLItemDesc_def *SQLItemDesc)
case SQLTYPECODE_VARCHAR_WITH_LENGTH:
if (m_SQLCharset == SQLCHARSETCODE_UCS2)
{
- if(SQLItemDesc->maxLen > 0x7fff)
+ if(SQLItemDesc->maxLen > SHRT_MAX)
m_SQLOctetLength = SQLItemDesc->maxLen+6;
else
m_SQLOctetLength = SQLItemDesc->maxLen+4;
}
else
{
- if(SQLItemDesc->maxLen > 0x7fff)
+ if(SQLItemDesc->maxLen > SHRT_MAX)
m_SQLOctetLength = SQLItemDesc->maxLen+5;
else
m_SQLOctetLength = SQLItemDesc->maxLen+3;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e0cf313f/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/charsetconv.cpp
----------------------------------------------------------------------
diff --git a/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/charsetconv.cpp b/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/charsetconv.cpp
index 05a7a37..2f96082 100644
--- a/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/charsetconv.cpp
+++ b/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/charsetconv.cpp
@@ -1029,7 +1029,7 @@ SQLRETURN ICUConverter::WCharToUTF8(UChar* wst, int wstlen, char *st, int stlen,
SQLRETURN ICUConverter::UTF8ToWChar(char *st, int stlen, UChar *wst, int wstlen, int *translen, char *error, DWORD dwFlags, int* reqLen)
{
- short len;
+ int len;
SQLRETURN rc = SQL_SUCCESS;
DWORD lastError;
error[0] ='\0';
@@ -1158,7 +1158,7 @@ SQLRETURN ICUConverter::WCharToISO88591(UChar* wst, int wstlen, char *st, int st
SQLRETURN ICUConverter::ISO88591ToWChar(char *st, int stlen, UChar *wst, int wstlen, int *translen, char *error, DWORD dwFlags, int* reqLen)
{
- short len;
+ int len;
SQLRETURN rc = SQL_SUCCESS;
DWORD lastError;
error[0] ='\0';
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e0cf313f/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/ctosqlconv.cpp
----------------------------------------------------------------------
diff --git a/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/ctosqlconv.cpp b/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/ctosqlconv.cpp
index 5663f09..cd1ddef 100644
--- a/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/ctosqlconv.cpp
+++ b/core/conn/unixodbc/odbc/odbcclient/unixcli/cli/ctosqlconv.cpp
@@ -362,7 +362,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
case SQL_LONGVARCHAR:
case SQL_WVARCHAR:
{
- if(targetPrecision > 0x7fff)
+ if(targetPrecision > SHRT_MAX)
{
Offset = sizeof(UINT);
}
@@ -655,7 +655,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
if (Offset != 0)
{
//#ifndef MXSUN
- if(targetPrecision > 0x7fff){
+ if(targetPrecision > SHRT_MAX){
outDataPtr = (unsigned char *)targetDataPtr + sizeof(int);
}
else{
@@ -3218,7 +3218,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
}
if (Offset != 0)
{
- if(targetPrecision > 0x7fff)
+ if(targetPrecision > SHRT_MAX)
*(unsigned int *)targetDataPtr = DataLen;
else
*(unsigned short *)targetDataPtr = DataLen;
@@ -3269,7 +3269,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
}
if (Offset != 0)
{
- if(targetPrecision > 0x7fff)
+ if(targetPrecision > SHRT_MAX)
{
if(iconv->getUCS2Translation())
*(unsigned int *)targetDataPtr = DataLen*2;
@@ -3330,7 +3330,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
}
if (Offset != 0)
{
- if(targetPrecision > 0x7fff)
+ if(targetPrecision > SHRT_MAX)
*(unsigned int *)targetDataPtr = DataLen;
else
*(unsigned short *)targetDataPtr = DataLen;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e0cf313f/win-odbc64/odbcclient/drvr35/cdesc.cpp
----------------------------------------------------------------------
diff --git a/win-odbc64/odbcclient/drvr35/cdesc.cpp b/win-odbc64/odbcclient/drvr35/cdesc.cpp
index 461c13c..f1e01ea 100644
--- a/win-odbc64/odbcclient/drvr35/cdesc.cpp
+++ b/win-odbc64/odbcclient/drvr35/cdesc.cpp
@@ -559,7 +559,7 @@ unsigned long CDescRec::setDescRec(short DescMode, SQLItemDesc_def *SQLItemDesc)
case SQLTYPECODE_VARCHAR_WITH_LENGTH:
if (m_SQLCharset == SQLCHARSETCODE_UCS2)
{
- if (SQLItemDesc->maxLen > 0x7fff)
+ if (SQLItemDesc->maxLen > SHRT_MAX)
{
m_SQLOctetLength = SQLItemDesc->maxLen + 6; //4 bytes for len and 2 bytes of null
}
@@ -570,7 +570,7 @@ unsigned long CDescRec::setDescRec(short DescMode, SQLItemDesc_def *SQLItemDesc)
}
else
{
- if (SQLItemDesc->maxLen > 0x7fff)
+ if (SQLItemDesc->maxLen > SHRT_MAX)
{
m_SQLOctetLength = SQLItemDesc->maxLen + 5; //4 bytes for len and 1 byte of null
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e0cf313f/win-odbc64/odbcclient/drvr35/ctosqlconv.cpp
----------------------------------------------------------------------
diff --git a/win-odbc64/odbcclient/drvr35/ctosqlconv.cpp b/win-odbc64/odbcclient/drvr35/ctosqlconv.cpp
index f9be84c..fb2a312 100644
--- a/win-odbc64/odbcclient/drvr35/ctosqlconv.cpp
+++ b/win-odbc64/odbcclient/drvr35/ctosqlconv.cpp
@@ -284,7 +284,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
case SQL_VARCHAR:
case SQL_LONGVARCHAR:
case SQL_WVARCHAR:
- if (targetPrecision > 0x7fff){
+ if (targetPrecision > SHRT_MAX){
Offset = sizeof(UINT);
}
else{
@@ -566,7 +566,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
}
if (Offset != 0)
{
- if (targetPrecision > 0x7fff)
+ if (targetPrecision > SHRT_MAX)
outDataPtr = (unsigned char *)targetDataPtr + sizeof(UINT);
else
outDataPtr = (unsigned char *)targetDataPtr + sizeof(USHORT);
@@ -3026,7 +3026,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
}
if (Offset != 0)
{
- if (targetPrecision > 0x7fff)
+ if (targetPrecision > SHRT_MAX)
*(unsigned int *)targetDataPtr = DataLen * 2;
else
*(unsigned short *)targetDataPtr = DataLen * 2;
@@ -3043,7 +3043,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
memcpy(outDataPtr, DataPtr, DataLen);
if (Offset != 0)
{
- if (targetPrecision > 0x7fff)
+ if (targetPrecision > SHRT_MAX)
*(unsigned int *)targetDataPtr = DataLen;
else
*(unsigned short *)targetDataPtr = DataLen;
@@ -3076,7 +3076,7 @@ unsigned long ODBC::ConvertCToSQL(SQLINTEGER ODBCAppVersion,
DataLen = translateLength;
if (Offset != 0)
{
- if (targetPrecision > 0x7fff)
+ if (targetPrecision > SHRT_MAX)
*(unsigned int *)targetDataPtr = DataLen;
else
*(unsigned short *)targetDataPtr = DataLen;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e0cf313f/win-odbc64/odbcclient/drvr35/sqltocconv.cpp
----------------------------------------------------------------------
diff --git a/win-odbc64/odbcclient/drvr35/sqltocconv.cpp b/win-odbc64/odbcclient/drvr35/sqltocconv.cpp
index 69c8363..ab56ccf 100644
--- a/win-odbc64/odbcclient/drvr35/sqltocconv.cpp
+++ b/win-odbc64/odbcclient/drvr35/sqltocconv.cpp
@@ -1411,6 +1411,7 @@ unsigned long ODBC::ConvertSQLToC(SQLINTEGER ODBCAppVersion,
case SQL_C_DATE:
case SQL_C_TYPE_DATE:
DataPtr = &dateTmp;
+ DataLen = sizeof(DATE_STRUCT);
switch (ODBCDataType)
{
case SQL_CHAR:
@@ -1656,6 +1657,7 @@ unsigned long ODBC::ConvertSQLToC(SQLINTEGER ODBCAppVersion,
case SQL_C_TIME:
case SQL_C_TYPE_TIME:
DataPtr = &timeTmp;
+ DataLen = sizeof(TIME_STRUCT);
switch (ODBCDataType)
{
case SQL_CHAR:
@@ -1880,6 +1882,7 @@ unsigned long ODBC::ConvertSQLToC(SQLINTEGER ODBCAppVersion,
case SQL_C_TIMESTAMP:
case SQL_C_TYPE_TIMESTAMP:
DataPtr = ×tampTmp;
+ DataLen = sizeof(TIMESTAMP_STRUCT);
switch (ODBCDataType)
{
case SQL_CHAR: