IGNITE-2243: Implemented SQLSetEnvAttr.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6c18d64d Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6c18d64d Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6c18d64d Branch: refs/heads/ignite-1786 Commit: 6c18d64daeb82ceb62c2d1744dd4d2490657d922 Parents: 4b25500 Author: isapego <[email protected]> Authored: Wed Jan 20 20:20:51 2016 +0300 Committer: isapego <[email protected]> Committed: Wed Jan 20 20:20:51 2016 +0300 ---------------------------------------------------------------------- .../include/ignite/odbc/environment.h | 19 ++++++++ .../odbc-driver/include/ignite/odbc/utility.h | 2 +- .../odbc-driver/project/vs/odbc-driver.vcxproj | 8 ++-- .../cpp/odbc/odbc-driver/src/environment.cpp | 28 ++++++++---- .../platforms/cpp/odbc/odbc-driver/src/odbc.cpp | 48 ++++++++++++-------- 5 files changed, 72 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/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 14d3613..4fff8d2 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 @@ -59,6 +59,15 @@ namespace ignite */ void TransactionRollback(); + /** + * Set attribute. + * + * @param attr Attribute to set. + * @param value Value. + * @param len Value length if the attribute is of string type. + */ + void SetAttribute(int32_t attr, void* value, int32_t len); + private: IGNITE_NO_COPY_ASSIGNMENT(Environment); @@ -86,6 +95,16 @@ namespace ignite * @return Operation result. */ SqlResult InternalTransactionRollback(); + + /** + * Set attribute. + * + * @param attr Attribute to set. + * @param value Value. + * @param len Value length if the attribute is of string type. + * @return Operation result. + */ + SqlResult InternalSetAttribute(int32_t attr, void* value, int32_t len); }; } } http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h index 922e5e2..4a2e928 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h +++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h @@ -41,7 +41,7 @@ void logInit(const char*); # define LOG_MSG(fmt, ...) \ do { \ - logInit(ODBC_LOG_PATH); \ + logInit(ODBC_LOG_PATH); \ fprintf(log_file, "%s: " fmt, __FUNCTION__, __VA_ARGS__); \ fflush(log_file); \ } while (false) http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj b/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj index 5f151e4..cff9f3f 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj +++ b/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj @@ -90,7 +90,7 @@ <Optimization>Disabled</Optimization> <SDLCheck>false</SDLCheck> <AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -104,7 +104,7 @@ <Optimization>Disabled</Optimization> <SDLCheck>false</SDLCheck> <AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -120,7 +120,7 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>false</SDLCheck> <AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -138,7 +138,7 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>false</SDLCheck> <AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/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 0063e87..58e018b 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp @@ -41,6 +41,20 @@ namespace ignite return connection; } + SqlResult Environment::InternalCreateConnection(Connection*& connection) + { + connection = new Connection; + + if (!connection) + { + AddStatusRecord(SQL_STATE_HY001_MEMORY_ALLOCATION, "Not enough memory."); + + return SQL_RESULT_ERROR; + } + + return SQL_RESULT_SUCCESS; + } + void Environment::TransactionCommit() { IGNITE_ODBC_API_CALL(InternalTransactionCommit()); @@ -64,17 +78,13 @@ namespace ignite return SQL_RESULT_ERROR; } - SqlResult Environment::InternalCreateConnection(Connection*& connection) + void Environment::SetAttribute(int32_t attr, void* value, int32_t len) { - connection = new Connection; - - if (!connection) - { - AddStatusRecord(SQL_STATE_HY001_MEMORY_ALLOCATION, "Not enough memory."); - - return SQL_RESULT_ERROR; - } + IGNITE_ODBC_API_CALL(InternalSetAttribute(attr, value, len)); + } + SqlResult Environment::InternalSetAttribute(int32_t attr, void* value, int32_t len) + { return SQL_RESULT_SUCCESS; } } http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp index 97b1569..2f206b4 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp @@ -1290,6 +1290,35 @@ SQLRETURN SQL_API SQLGetData(SQLHSTMT stmt, return statement->GetDiagnosticRecords().GetReturnCode(); } +SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV env, + SQLINTEGER attr, + SQLPOINTER value, + SQLINTEGER valueLen) +{ + using ignite::odbc::Environment; + + LOG_MSG("SQLSetEnvAttr called\n"); + + Environment *environment = reinterpret_cast<Environment*>(env); + + if (!environment) + return SQL_INVALID_HANDLE; + + environment->SetAttribute(attr, value, valueLen); + + return environment->GetDiagnosticRecords().GetReturnCode(); +} + +SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV env, + SQLINTEGER attr, + SQLPOINTER valueBuf, + SQLINTEGER valueBufLen, + SQLINTEGER* valueResLen) +{ + LOG_MSG("SQLGetEnvAttr called\n"); + return SQL_SUCCESS; +} + // // ==== Not implemented ==== // @@ -1479,16 +1508,6 @@ SQLRETURN SQL_API SQLGetConnectAttr(SQLHDBC conn, return SQL_SUCCESS; } -SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV env, - SQLINTEGER attr, - SQLPOINTER valueBuf, - SQLINTEGER valueBufLen, - SQLINTEGER* valueResLen) -{ - LOG_MSG("SQLGetEnvAttr called\n"); - return SQL_SUCCESS; -} - SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC conn, SQLINTEGER attr, SQLPOINTER value, @@ -1506,15 +1525,6 @@ SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC conn, return SQL_SUCCESS; } -SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV env, - SQLINTEGER attr, - SQLPOINTER value, - SQLINTEGER valueLen) -{ - LOG_MSG("SQLSetEnvAttr called\n"); - return SQL_SUCCESS; -} - SQLRETURN SQL_API SQLBulkOperations(SQLHSTMT stmt, SQLUSMALLINT operation) {
