You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2015/10/28 07:40:23 UTC
incubator-kylin git commit: KYLIN-1065 ODBC driver support tableau 9.1
Repository: incubator-kylin
Updated Branches:
refs/heads/2.x-staging 2725da78a -> 975733630
KYLIN-1065 ODBC driver support tableau 9.1
Signed-off-by: honma <ho...@ebay.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/97573363
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/97573363
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/97573363
Branch: refs/heads/2.x-staging
Commit: 975733630f170435d5818c202dc0bd83a8071066
Parents: 2725da7
Author: lidongsjtu <li...@126.com>
Authored: Wed Oct 28 12:44:47 2015 +0800
Committer: honma <ho...@ebay.com>
Committed: Wed Oct 28 14:44:13 2015 +0800
----------------------------------------------------------------------
odbc/Driver/KO_DESC.CPP | 25 ++++++++++++++++++++++++-
odbc/Driver/KO_DIAG.CPP | 3 ++-
odbc/Driver/KO_FETCH.CPP | 7 ++++---
odbc/Driver/KO_INFO.CPP | 5 -----
odbc/Driver/KO_UTILS.CPP | 13 ++++++++-----
odbc/Driver/KylinODBC.H | 4 ++--
odbc/Driver/driver.vcxproj | 1 +
7 files changed, 41 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/KO_DESC.CPP
----------------------------------------------------------------------
diff --git a/odbc/Driver/KO_DESC.CPP b/odbc/Driver/KO_DESC.CPP
index 9d9e14a..3a92e26 100644
--- a/odbc/Driver/KO_DESC.CPP
+++ b/odbc/Driver/KO_DESC.CPP
@@ -2414,8 +2414,31 @@ RETCODE SQL_API _SQLGetIRDItemField ( const pODBCIRD pDesc, const pIRDItem pDesc
* ( ( Long* ) pDataPtr ) = pDescItem->isAutoIncrement; // whether a col is auto-incrementing
break;
- case SQL_DESC_NAME://1011
case SQL_DESC_LABEL://18
+ s = pDescItem->label.c_str();
+
+ // transfer col label
+ if ( isANSI )
+ { _SQLCopyCharData ( _DIAGSTMT ( pDesc->Stmt ), pDataPtr, pDataSize, pDataSizePtr, 32, ( ( s ) ? s : "" ), -1 ); }
+
+ else
+ { _SQLCopyWCharData ( _DIAGSTMT ( pDesc->Stmt ), pDataPtr, pDataSize, pDataSizePtr, 32, ( ( s ) ? s : "" ), -1 ); }
+
+ break;
+
+ case SQL_DESC_NAME://1011
+ s = pDescItem->label.c_str();
+ if (!s) s = pDescItem->name.c_str();
+
+ // transfer col desc
+ if ( isANSI )
+ { _SQLCopyCharData ( _DIAGSTMT ( pDesc->Stmt ), pDataPtr, pDataSize, pDataSizePtr, 32, ( ( s ) ? s : "" ), -1 ); }
+
+ else
+ { _SQLCopyWCharData ( _DIAGSTMT ( pDesc->Stmt ), pDataPtr, pDataSize, pDataSizePtr, 32, ( ( s ) ? s : "" ), -1 ); }
+
+ break;
+
case SQL_DESC_BASE_COLUMN_NAME://22
s = pDescItem->name.c_str();
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/KO_DIAG.CPP
----------------------------------------------------------------------
diff --git a/odbc/Driver/KO_DIAG.CPP b/odbc/Driver/KO_DIAG.CPP
index e7cf27e..a74dd9d 100644
--- a/odbc/Driver/KO_DIAG.CPP
+++ b/odbc/Driver/KO_DIAG.CPP
@@ -454,7 +454,8 @@ RETCODE SQL_API SQLGetDiagRecW ( SQLSMALLINT pHandleType,
// msg
__ODBCLOG ( _ODBCLogMsg ( LogLevel_DEBUG, "The message is %s", diagrow->Msg ) );
- _SQLCopyWCharData ( diag, pMsgTxtPtr, pMsgTxtSize, pMsgTxtSizePtr, 16, diagrow->Msg, -1 );
+ _SQLCopyWCharData ( diag, pMsgTxtPtr, pMsgTxtSize, pMsgTxtSizePtr, 16, diagrow->Msg, -1, false );
+
// debug
//__ODBCLOG(_ODBCLogMsg(LogLevel_DEBUG,"SQLGetDiagRec msg: %s", pMsgTxtPtr ? ( StrPtr )pMsgTxtPtr : "(unknown)" ));
RETCODE ret = ( pMsgTxtSizePtr && ( *pMsgTxtSizePtr ) > pMsgTxtSize ) ? SQL_SUCCESS_WITH_INFO : SQL_SUCCESS;
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/KO_FETCH.CPP
----------------------------------------------------------------------
diff --git a/odbc/Driver/KO_FETCH.CPP b/odbc/Driver/KO_FETCH.CPP
index 99a3ed2..1053e32 100644
--- a/odbc/Driver/KO_FETCH.CPP
+++ b/odbc/Driver/KO_FETCH.CPP
@@ -221,7 +221,9 @@ RETCODE _SQLColAttribute_basic ( SQLHSTMT pStmt,
__ODBCPOPMSG ( _ODBCPopMsg ( "SQLColAttribute unknown attr, ColNum: %d, FldID: %d\n", pColNum, pFldID ) );
return SQL_ERROR;
}
-
+ //unique_ptr<char[]> temp ( wchar2char ( ( wchar_t* ) pDataPtr ) );
+ //__ODBCLOG(_ODBCLogMsg(LogLevel_INFO, "_SQLColAttribute_basic was called - Stmt:%d, ColNum:%d, FldId:%d, pDataStr:%s, pDataSize:%d, pDataSizePtr:%d(n:%d), pNumValPtr:%d",
+ // pStmt, pColNum, pFldID, temp.get(), pDataSize, pDataSizePtr, n, pNumValuePtr ? *(( Long* )pNumValuePtr):-1));
return SQL_SUCCESS;
}
@@ -849,8 +851,7 @@ RETCODE SQL_API _SQLColConvert ( pODBCStmt pStmt,
-1 );
}
}
-
- if ( pTgtDataType == SQL_WCHAR || pTgtDataType == SQL_WVARCHAR ) {
+ else if ( pTgtDataType == SQL_WCHAR || pTgtDataType == SQL_WVARCHAR ) {
return _SQLCopyWCharDataW ( _DIAGSTMT ( pStmt ), pTgtDataPtr, pARDCol->DataSize, pTgtDataSizePtr, 32, pSrcColData, -1 );
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/KO_INFO.CPP
----------------------------------------------------------------------
diff --git a/odbc/Driver/KO_INFO.CPP b/odbc/Driver/KO_INFO.CPP
index 5a36508..d8287b0 100644
--- a/odbc/Driver/KO_INFO.CPP
+++ b/odbc/Driver/KO_INFO.CPP
@@ -593,11 +593,6 @@ RETCODE SQL_API SQLGetInfoW ( SQLHDBC pConn,
pBufferLength, pStringLengthPtr ) );
}
- //// *2 is already done in _SQLCopyWCharData()
- /*if ( pStringLengthPtr ) {
- *pStringLengthPtr = ( *pStringLengthPtr ) * 2;
- }*/
-
return SQL_SUCCESS;
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/KO_UTILS.CPP
----------------------------------------------------------------------
diff --git a/odbc/Driver/KO_UTILS.CPP b/odbc/Driver/KO_UTILS.CPP
index 275c93b..ea7ccf7 100644
--- a/odbc/Driver/KO_UTILS.CPP
+++ b/odbc/Driver/KO_UTILS.CPP
@@ -234,13 +234,13 @@ RETCODE SQL_API _SQLCopyCharData ( pODBCDiag pDiag, void* pTgtDataPtr, Long pDat
}
RETCODE SQL_API _SQLCopyWCharData ( pODBCDiag pDiag, void* pTgtDataPtr, Long pDataBufSize, void* pSizePtr,
- Word pSizePtrSize, CStrPtr pSrcData, Long pSrcDataSize ) {
+ Word pSizePtrSize, CStrPtr pSrcData, Long pSrcDataSize , bool returnByteSize) {
unique_ptr<wchar_t[]> pWCS ( char2wchar ( pSrcData ) );
- return _SQLCopyWCharDataW ( pDiag, pTgtDataPtr, pDataBufSize, pSizePtr, pSizePtrSize, pWCS.get(), pSrcDataSize );
+ return _SQLCopyWCharDataW ( pDiag, pTgtDataPtr, pDataBufSize, pSizePtr, pSizePtrSize, pWCS.get(), pSrcDataSize, returnByteSize);
}
//mhb added, for those ard that accept wchar
RETCODE SQL_API _SQLCopyWCharDataW ( pODBCDiag pDiag, void* pTgtDataPtr, Long pDataBufSize, void* pSizePtr,
- Word pSizePtrSize, const wchar_t* pSrcData, Long pSrcDataSize ) {
+ Word pSizePtrSize, const wchar_t* pSrcData, Long pSrcDataSize, bool returnByteSize ) {
__ODBCLOG ( _ODBCLogMsg ( LogLevel_DEBUG, "_SQLCopyWCharDataW called, pTgtDataPtr is null? %d, pSizePtr == null? %d",
pTgtDataPtr == NULL, pSizePtr == NULL ) );
__ODBCLOG ( _ODBCLogMsg ( LogLevel_DEBUG, "_SQLCopyWCharDataW called, the src string is :" ) );
@@ -265,11 +265,14 @@ RETCODE SQL_API _SQLCopyWCharDataW ( pODBCDiag pDiag, void* pTgtDataPtr, Long pD
// set size as per ptr type 16-bt or 32-bit
//should be number of characters
+ Long pPtrSizeBuf = n;
+ if (returnByteSize) { pPtrSizeBuf = 2 * n; }
+
if ( pSizePtrSize == 16 )
- { * ( ( Word* ) pSizePtr ) = ( Word ) ( 2 * n ); }
+ { * ( ( Word* ) pSizePtr ) = ( Word ) pPtrSizeBuf; }
else
- { * ( ( Long* ) pSizePtr ) = ( 2 * n ); }
+ { * ( ( Long* ) pSizePtr ) = pPtrSizeBuf; }
__ODBCLOG ( _ODBCLogMsg ( LogLevel_DEBUG, "pSizePtr is set to %d", n ) );
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/KylinODBC.H
----------------------------------------------------------------------
diff --git a/odbc/Driver/KylinODBC.H b/odbc/Driver/KylinODBC.H
index 534a04e..896c9e9 100644
--- a/odbc/Driver/KylinODBC.H
+++ b/odbc/Driver/KylinODBC.H
@@ -642,9 +642,9 @@ eGoodBad PutRespToStmt ( pODBCStmt pStmt, std::unique_ptr<SQLResponse
RETCODE SQL_API _SQLCopyCharData ( pODBCDiag pDiag, void* pDataPtr, Long pDataBufSize, void* pSizePtr,
Word pSizePtrSize, CStrPtr pSrcData, Long pSrcDataSize );
RETCODE SQL_API _SQLCopyWCharData ( pODBCDiag pDiag, void* pDataPtr, Long pDataBufSize, void* pSizePtr,
- Word pSizePtrSize, CStrPtr pSrcData, Long pSrcDataSize );
+ Word pSizePtrSize, CStrPtr pSrcData, Long pSrcDataSize, bool returnByteSize = true );
RETCODE SQL_API _SQLCopyWCharDataW ( pODBCDiag pDiag, void* pDataPtr, Long pDataBufSize, void* pSizePtr,
- Word pSizePtrSize, const wchar_t* pSrcData, Long pSrcDataSize );
+ Word pSizePtrSize, const wchar_t* pSrcData, Long pSrcDataSize, bool returnByteSize = true );
Word _SQLCopyNumData ( pODBCDiag pDiag, void* pTgtDataPtr, Word pTgtDataType, CStrPtr pSrcData,
Word pSrcDataType, Long* pTgtDataSizePtr );
Word _SQLCopyDateTimeData ( pODBCDiag pDiag, void* pTgtDataPtr, Word pTgtDataType, CStrPtr pSrcData,
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/97573363/odbc/Driver/driver.vcxproj
----------------------------------------------------------------------
diff --git a/odbc/Driver/driver.vcxproj b/odbc/Driver/driver.vcxproj
index e98f79f..bbc1c3e 100644
--- a/odbc/Driver/driver.vcxproj
+++ b/odbc/Driver/driver.vcxproj
@@ -168,6 +168,7 @@
<AdditionalDependencies>odbccp32.lib;odbc32.lib;mswsock.lib;ws2_32.lib;winhttp.lib;cpprest110_2_0.lib;Common.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\driver.DEF</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
<PostBuildEvent>
<Command>