IGNITE-2243: SQL_ATTR_OUTPUT_NTS implemented.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0346daf3 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0346daf3 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0346daf3 Branch: refs/heads/ignite-1786 Commit: 0346daf3739cc77c0ad9c0181533730e444350d4 Parents: b60b3dc Author: isapego <[email protected]> Authored: Wed Jan 20 21:28:19 2016 +0300 Committer: isapego <[email protected]> Committed: Wed Jan 20 21:28:19 2016 +0300 ---------------------------------------------------------------------- .../include/ignite/odbc/common_types.h | 7 +++-- .../include/ignite/odbc/environment.h | 3 ++ .../cpp/odbc/odbc-driver/src/common_types.cpp | 3 ++ .../cpp/odbc/odbc-driver/src/environment.cpp | 30 ++++++++++++++++++-- 4 files changed, 38 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/0346daf3/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h index e79a572..c065872 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h +++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h @@ -186,8 +186,11 @@ namespace ignite /** ODBC attribute is unknown to the driver. */ IGNITE_SQL_ENV_ATTR_UNKNOWN, - /** ODBC attribute. */ - IGNITE_SQL_ENV_ATTR_ODBC_VERSION + /** ODBC version. */ + IGNITE_SQL_ENV_ATTR_ODBC_VERSION, + + /** Null-termination of strings. */ + IGNITE_SQL_ENV_ATTR_OUTPUT_NTS }; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/0346daf3/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h index a9c4889..7168aa3 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h +++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h @@ -127,6 +127,9 @@ namespace ignite /** ODBC version. */ int32_t odbcVersion; + + /** ODBC null-termintaion of string behaviour. */ + int32_t odbcNts; }; } } http://git-wip-us.apache.org/repos/asf/ignite/blob/0346daf3/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp index 83bfe4c..276d9fd 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp @@ -106,6 +106,9 @@ namespace ignite case SQL_ATTR_ODBC_VERSION: return IGNITE_SQL_ENV_ATTR_ODBC_VERSION; + case SQL_ATTR_OUTPUT_NTS: + return IGNITE_SQL_ENV_ATTR_OUTPUT_NTS; + default: break; } http://git-wip-us.apache.org/repos/asf/ignite/blob/0346daf3/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp index 078d546..01f606f 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp @@ -24,7 +24,7 @@ namespace ignite namespace odbc { Environment::Environment() : - odbcVersion(SQL_OV_ODBC3) + odbcVersion(SQL_OV_ODBC3), odbcNts(SQL_TRUE) { // No-op. } @@ -105,7 +105,24 @@ namespace ignite return SQL_RESULT_SUCCESS_WITH_INFO; } - break; + return SQL_RESULT_SUCCESS; + } + + case IGNITE_SQL_ENV_ATTR_OUTPUT_NTS: + { + int32_t* nts = reinterpret_cast<int32_t*>(value); + + if (*nts != odbcNts) + { + AddStatusRecord(SQL_STATE_01S02_OPTION_VALUE_CHANGED, + "Only null-termination of strings is supported."); + + *nts = odbcNts; + + return SQL_RESULT_SUCCESS_WITH_INFO; + } + + return SQL_RESULT_SUCCESS; } case IGNITE_SQL_ENV_ATTR_UNKNOWN: @@ -134,7 +151,14 @@ namespace ignite { buffer.PutInt32(odbcVersion); - break; + return SQL_RESULT_SUCCESS; + } + + case IGNITE_SQL_ENV_ATTR_OUTPUT_NTS: + { + buffer.PutInt32(odbcNts); + + return SQL_RESULT_SUCCESS; } case IGNITE_SQL_ENV_ATTR_UNKNOWN:
