From c516efd990a4f62aff0b030d4c7d39e163a83874 Mon Sep 17 00:00:00 2001 From: Yifan Zhang Date: Thu, 27 Apr 2017 11:17:35 +0800 Subject: [PATCH] KYLIN-2569 Fix long query issue, avoid ODBC log writing out of buffer --- odbc/Driver/KO_DIAG.CPP | 11 ++++++++++- odbc/Driver/KO_FETCH.CPP | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/odbc/Driver/KO_DIAG.CPP b/odbc/Driver/KO_DIAG.CPP index e296335..ac313e7 100644 --- a/odbc/Driver/KO_DIAG.CPP +++ b/odbc/Driver/KO_DIAG.CPP @@ -1126,8 +1126,17 @@ void _ODBCLogMsg ( LogLevel level, const char* pMsgArgs, ... ) { // convert to full msg including parsed params va_start ( args, pMsgArgs ); - vsprintf ( s, pMsgArgs, args ); + vsnprintf ( s, 4095, pMsgArgs, args ); va_end ( args ); + // Omit out of buffer message + if ( strlen ( s ) >= 4095 ) + { + s[4092] = '.'; + s[4093] = '.'; + s[4094] = '.'; + s[4095] = 0; + } + } else diff --git a/odbc/Driver/KO_FETCH.CPP b/odbc/Driver/KO_FETCH.CPP index 07780cf..a7ef57a 100644 --- a/odbc/Driver/KO_FETCH.CPP +++ b/odbc/Driver/KO_FETCH.CPP @@ -146,6 +146,8 @@ RETCODE _SQLColAttribute_basic ( SQLHSTMT pStmt, return SQL_ERROR; } + __ODBCLOG ( _ODBCLogMsg ( LogLevel_DEBUG, "SQLColAttribute_basic called, ColNum: %d, FldID: %d", pColNum, pFldID ) ); + // get value from descriptor as per field type switch ( pFldID ) { -- 2.10.2.windows.1