IGNITE-3773: ODBC: Added tests for UUID data type. This closes #993.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/28917034 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/28917034 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/28917034 Branch: refs/heads/master Commit: 289170346e40a89243b80d3743c1b66543a117ef Parents: b575764 Author: Igor Sapego <[email protected]> Authored: Mon Aug 29 15:00:08 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Mon Aug 29 15:00:08 2016 +0300 ---------------------------------------------------------------------- .../processors/odbc/escape/OdbcEscapeUtils.java | 2 +- modules/platforms/cpp/odbc-test/Makefile.am | 5 +- .../platforms/cpp/odbc-test/include/Makefile.am | 2 +- .../include/sql_function_test_suite_fixture.h | 188 ------------- .../odbc-test/include/sql_test_suite_fixture.h | 191 +++++++++++++ .../cpp/odbc-test/project/vs/odbc-test.vcxproj | 7 +- .../project/vs/odbc-test.vcxproj.filters | 13 +- .../src/sql_aggregate_functions_test.cpp | 4 +- .../src/sql_function_test_suite_fixture.cpp | 252 ----------------- .../src/sql_numeric_functions_test.cpp | 4 +- .../cpp/odbc-test/src/sql_operators_test.cpp | 4 +- .../odbc-test/src/sql_string_functions_test.cpp | 4 +- .../odbc-test/src/sql_system_functions_test.cpp | 4 +- .../odbc-test/src/sql_test_suite_fixture.cpp | 271 +++++++++++++++++++ .../cpp/odbc-test/src/sql_types_test.cpp | 60 ++++ .../cpp/odbc-test/src/sql_value_expressions.cpp | 94 ------- .../src/sql_value_expressions_test.cpp | 94 +++++++ 17 files changed, 643 insertions(+), 556 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java index 4c1deb6..a4b89c3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcEscapeUtils.java @@ -291,7 +291,7 @@ public class OdbcEscapeUtils { if (!pattern.matcher(val).matches()) throw new IgniteException("Invalid " + type + " escape sequence: " + substring(text, startPos, len)); - return val; + return "CAST(" + val + " AS UUID)"; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/Makefile.am b/modules/platforms/cpp/odbc-test/Makefile.am index a3f954e..de8fb5d 100644 --- a/modules/platforms/cpp/odbc-test/Makefile.am +++ b/modules/platforms/cpp/odbc-test/Makefile.am @@ -62,13 +62,14 @@ ignite_odbc_tests_SOURCES = \ src/utility_test.cpp \ src/queries_test.cpp \ src/test_utils.cpp \ - src/sql_function_test_suite_fixture.cpp \ + src/sql_test_suite_fixture.cpp \ src/sql_string_functions_test.cpp \ src/sql_numeric_functions_test.cpp \ src/sql_aggregate_functions_test.cpp \ src/sql_system_functions_test.cpp \ src/sql_operators_test.cpp \ - src/sql_value_expressions.cpp \ + src/sql_value_expressions_test.cpp \ + src/sql_types_test.cpp \ ../odbc/src/cursor.cpp \ ../odbc/src/config/connection_info.cpp \ ../odbc/src/app/application_data_buffer.cpp \ http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/include/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/include/Makefile.am b/modules/platforms/cpp/odbc-test/include/Makefile.am index baca1b7..832103c 100644 --- a/modules/platforms/cpp/odbc-test/include/Makefile.am +++ b/modules/platforms/cpp/odbc-test/include/Makefile.am @@ -21,5 +21,5 @@ noinst_HEADERS = \ teamcity/teamcity_messages.h \ test_type.h \ test_utils.h \ - sql_function_test_suite_fixture.h + sql_test_suite_fixture.h http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/include/sql_function_test_suite_fixture.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/include/sql_function_test_suite_fixture.h b/modules/platforms/cpp/odbc-test/include/sql_function_test_suite_fixture.h deleted file mode 100644 index 57c3f0f..0000000 --- a/modules/platforms/cpp/odbc-test/include/sql_function_test_suite_fixture.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _IGNITE_ODBC_TEST_SQL_FUNCTION_TEST_FIXTURE -#define _IGNITE_ODBC_TEST_SQL_FUNCTION_TEST_FIXTURE - -#ifdef _WIN32 -# include <windows.h> -#endif - -#include <sql.h> -#include <sqlext.h> - -#include <string> - -#ifndef _MSC_VER -# define BOOST_TEST_DYN_LINK -#endif - -#include <boost/test/unit_test.hpp> - -#include "ignite/ignite.h" -#include "ignite/ignition.h" - -#include "test_type.h" - -namespace ignite -{ - /** - * Test setup fixture. - */ - struct SqlFunctionTestSuiteFixture - { - /** - * Constructor. - */ - SqlFunctionTestSuiteFixture(); - - /** - * Destructor. - */ - ~SqlFunctionTestSuiteFixture(); - - /** - * Run query returning single result and stores it to buffer. - * - * @param request SQL request. - * @param type Result type. - * @param column Result buffer. - * @param bufSize Result buffer size. - * @param resSize Size of received value. - */ - void CheckSingleResult0(const char* request, SQLSMALLINT type, - void* column, SQLLEN bufSize, SQLLEN* resSize) const; - - /** - * Run query returning single result and check it to be equal to expected. - * - * @param request SQL request. - * @param expected Expected result. - */ - template<typename T> - void CheckSingleResult(const char* request, const T& expected) - { - BOOST_FAIL("Function is not defined for the type."); - } - - /** - * Run query returning single result and check it to be successful. - * - * @param request SQL request. - */ - template<typename T> - void CheckSingleResult(const char* request) - { - BOOST_FAIL("Function is not defined for the type."); - } - - /** - * Run query returning single result and check it to be equal to expected. - * - * @param request SQL request. - * @param expected Expected result. - * @param type Result type. - */ - template<typename T> - void CheckSingleResultNum0(const char* request, const T& expected, SQLSMALLINT type) - { - T res = 0; - - CheckSingleResult0(request, type, &res, 0, 0); - - BOOST_CHECK_EQUAL(res, expected); - } - - /** - * Run query returning single result and check it to be equal to expected. - * - * @param request SQL request. - * @param expected Expected result. - * @param type Result type. - */ - template<typename T> - void CheckSingleResultNum0(const char* request, SQLSMALLINT type) - { - T res = 0; - - CheckSingleResult0(request, type, &res, 0, 0); - } - - - /** Node started during the test. */ - Ignite grid; - - /** Test cache instance. */ - cache::Cache<int64_t, TestType> testCache; - - /** ODBC Environment. */ - SQLHENV env; - - /** ODBC Connect. */ - SQLHDBC dbc; - - /** ODBC Statement. */ - SQLHSTMT stmt; - }; - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<std::string>(const char* request, const std::string& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int64_t>(const char* request, const int64_t& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int32_t>(const char* request, const int32_t& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int16_t>(const char* request, const int16_t& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int8_t>(const char* request, const int8_t& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<float>(const char* request, const float& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<double>(const char* request, const double& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<bool>(const char* request, const bool& expected); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<std::string>(const char* request); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int64_t>(const char* request); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int32_t>(const char* request); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int16_t>(const char* request); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int8_t>(const char* request); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<float>(const char* request); - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<double>(const char* request); -} - -#endif //_IGNITE_ODBC_TEST_SQL_FUNCTION_TEST_FIXTURE http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/include/sql_test_suite_fixture.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/include/sql_test_suite_fixture.h b/modules/platforms/cpp/odbc-test/include/sql_test_suite_fixture.h new file mode 100644 index 0000000..9e482da --- /dev/null +++ b/modules/platforms/cpp/odbc-test/include/sql_test_suite_fixture.h @@ -0,0 +1,191 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _IGNITE_ODBC_TEST_SQL_TEST_SUIT_FIXTURE +#define _IGNITE_ODBC_TEST_SQL_TEST_SUIT_FIXTURE + +#ifdef _WIN32 +# include <windows.h> +#endif + +#include <sql.h> +#include <sqlext.h> + +#include <string> + +#ifndef _MSC_VER +# define BOOST_TEST_DYN_LINK +#endif + +#include <boost/test/unit_test.hpp> + +#include "ignite/ignite.h" +#include "ignite/ignition.h" + +#include "test_type.h" + +namespace ignite +{ + /** + * Test setup fixture. + */ + struct SqlTestSuiteFixture + { + /** + * Constructor. + */ + SqlTestSuiteFixture(); + + /** + * Destructor. + */ + ~SqlTestSuiteFixture(); + + /** + * Run query returning single result and stores it to buffer. + * + * @param request SQL request. + * @param type Result type. + * @param column Result buffer. + * @param bufSize Result buffer size. + * @param resSize Size of received value. + */ + void CheckSingleResult0(const char* request, SQLSMALLINT type, + void* column, SQLLEN bufSize, SQLLEN* resSize) const; + + /** + * Run query returning single result and check it to be equal to expected. + * + * @param request SQL request. + * @param expected Expected result. + */ + template<typename T> + void CheckSingleResult(const char* request, const T& expected) + { + BOOST_FAIL("Function is not defined for the type."); + } + + /** + * Run query returning single result and check it to be successful. + * + * @param request SQL request. + */ + template<typename T> + void CheckSingleResult(const char* request) + { + BOOST_FAIL("Function is not defined for the type."); + } + + /** + * Run query returning single result and check it to be equal to expected. + * + * @param request SQL request. + * @param expected Expected result. + * @param type Result type. + */ + template<typename T> + void CheckSingleResultNum0(const char* request, const T& expected, SQLSMALLINT type) + { + T res = 0; + + CheckSingleResult0(request, type, &res, 0, 0); + + BOOST_CHECK_EQUAL(res, expected); + } + + /** + * Run query returning single result and check it to be equal to expected. + * + * @param request SQL request. + * @param expected Expected result. + * @param type Result type. + */ + template<typename T> + void CheckSingleResultNum0(const char* request, SQLSMALLINT type) + { + T res = 0; + + CheckSingleResult0(request, type, &res, 0, 0); + } + + + /** Node started during the test. */ + Ignite grid; + + /** Test cache instance. */ + cache::Cache<int64_t, TestType> testCache; + + /** ODBC Environment. */ + SQLHENV env; + + /** ODBC Connect. */ + SQLHDBC dbc; + + /** ODBC Statement. */ + SQLHSTMT stmt; + }; + + template<> + void SqlTestSuiteFixture::CheckSingleResult<std::string>(const char* request, const std::string& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int64_t>(const char* request, const int64_t& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int32_t>(const char* request, const int32_t& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int16_t>(const char* request, const int16_t& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int8_t>(const char* request, const int8_t& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<float>(const char* request, const float& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<double>(const char* request, const double& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<bool>(const char* request, const bool& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<ignite::Guid>(const char* request, const ignite::Guid& expected); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<std::string>(const char* request); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int64_t>(const char* request); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int32_t>(const char* request); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int16_t>(const char* request); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int8_t>(const char* request); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<float>(const char* request); + + template<> + void SqlTestSuiteFixture::CheckSingleResult<double>(const char* request); +} + +#endif //_IGNITE_ODBC_TEST_SQL_TEST_SUIT_FIXTURE http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj b/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj index 8b4bee6..a9423ca 100644 --- a/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj +++ b/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj @@ -169,19 +169,20 @@ <ClCompile Include="..\..\src\parser_test.cpp" /> <ClCompile Include="..\..\src\row_test.cpp" /> <ClCompile Include="..\..\src\sql_aggregate_functions_test.cpp" /> - <ClCompile Include="..\..\src\sql_function_test_suite_fixture.cpp" /> + <ClCompile Include="..\..\src\sql_test_suite_fixture.cpp" /> <ClCompile Include="..\..\src\sql_numeric_functions_test.cpp" /> <ClCompile Include="..\..\src\sql_operators_test.cpp" /> <ClCompile Include="..\..\src\sql_string_functions_test.cpp" /> <ClCompile Include="..\..\src\sql_system_functions_test.cpp" /> - <ClCompile Include="..\..\src\sql_value_expressions.cpp" /> + <ClCompile Include="..\..\src\sql_types_test.cpp" /> + <ClCompile Include="..\..\src\sql_value_expressions_test.cpp" /> <ClCompile Include="..\..\src\teamcity\teamcity_boost.cpp" /> <ClCompile Include="..\..\src\teamcity\teamcity_messages.cpp" /> <ClCompile Include="..\..\src\test_utils.cpp" /> <ClCompile Include="..\..\src\utility_test.cpp" /> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\include\sql_function_test_suite_fixture.h" /> + <ClInclude Include="..\..\include\sql_test_suite_fixture.h" /> <ClInclude Include="..\..\include\teamcity\teamcity_messages.h" /> <ClInclude Include="..\..\include\test_type.h" /> <ClInclude Include="..\..\include\test_utils.h" /> http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj.filters ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj.filters b/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj.filters index 4756f83..84f5a29 100644 --- a/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj.filters +++ b/modules/platforms/cpp/odbc-test/project/vs/odbc-test.vcxproj.filters @@ -85,9 +85,6 @@ <ClCompile Include="..\..\src\sql_numeric_functions_test.cpp"> <Filter>Code</Filter> </ClCompile> - <ClCompile Include="..\..\src\sql_function_test_suite_fixture.cpp"> - <Filter>Code</Filter> - </ClCompile> <ClCompile Include="..\..\src\sql_aggregate_functions_test.cpp"> <Filter>Code</Filter> </ClCompile> @@ -97,7 +94,13 @@ <ClCompile Include="..\..\src\sql_operators_test.cpp"> <Filter>Code</Filter> </ClCompile> - <ClCompile Include="..\..\src\sql_value_expressions.cpp"> + <ClCompile Include="..\..\src\sql_types_test.cpp"> + <Filter>Code</Filter> + </ClCompile> + <ClCompile Include="..\..\src\sql_test_suite_fixture.cpp"> + <Filter>Code</Filter> + </ClCompile> + <ClCompile Include="..\..\src\sql_value_expressions_test.cpp"> <Filter>Code</Filter> </ClCompile> </ItemGroup> @@ -111,7 +114,7 @@ <ClInclude Include="..\..\include\test_utils.h"> <Filter>Code</Filter> </ClInclude> - <ClInclude Include="..\..\include\sql_function_test_suite_fixture.h"> + <ClInclude Include="..\..\include\sql_test_suite_fixture.h"> <Filter>Code</Filter> </ClInclude> </ItemGroup> http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_aggregate_functions_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_aggregate_functions_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_aggregate_functions_test.cpp index 6254913..3fa4d97 100644 --- a/modules/platforms/cpp/odbc-test/src/sql_aggregate_functions_test.cpp +++ b/modules/platforms/cpp/odbc-test/src/sql_aggregate_functions_test.cpp @@ -41,7 +41,7 @@ #include "test_type.h" #include "test_utils.h" -#include "sql_function_test_suite_fixture.h" +#include "sql_test_suite_fixture.h" using namespace ignite; using namespace ignite::cache; @@ -52,7 +52,7 @@ using namespace boost::unit_test; using ignite::impl::binary::BinaryUtils; -BOOST_FIXTURE_TEST_SUITE(SqlAggregateFunctionTestSuite, ignite::SqlFunctionTestSuiteFixture) +BOOST_FIXTURE_TEST_SUITE(SqlAggregateFunctionTestSuite, ignite::SqlTestSuiteFixture) BOOST_AUTO_TEST_CASE(TestAggregateFunctionAvgInt) { http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_function_test_suite_fixture.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_function_test_suite_fixture.cpp b/modules/platforms/cpp/odbc-test/src/sql_function_test_suite_fixture.cpp deleted file mode 100644 index d6b175f..0000000 --- a/modules/platforms/cpp/odbc-test/src/sql_function_test_suite_fixture.cpp +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "sql_function_test_suite_fixture.h" - -#include "test_utils.h" - -namespace ignite -{ - SqlFunctionTestSuiteFixture::SqlFunctionTestSuiteFixture(): - testCache(0), - env(NULL), - dbc(NULL), - stmt(NULL) - { - IgniteConfiguration cfg; - - cfg.jvmOpts.push_back("-Xdebug"); - cfg.jvmOpts.push_back("-Xnoagent"); - cfg.jvmOpts.push_back("-Djava.compiler=NONE"); - cfg.jvmOpts.push_back("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"); - cfg.jvmOpts.push_back("-XX:+HeapDumpOnOutOfMemoryError"); - -#ifdef IGNITE_TESTS_32 - cfg.jvmInitMem = 256; - cfg.jvmMaxMem = 768; -#else - cfg.jvmInitMem = 1024; - cfg.jvmMaxMem = 4096; -#endif - - char* cfgPath = getenv("IGNITE_NATIVE_TEST_ODBC_CONFIG_PATH"); - - BOOST_REQUIRE(cfgPath != 0) ; - - cfg.springCfgPath.assign(cfgPath).append("/queries-test.xml"); - - IgniteError err; - - grid = Ignition::Start(cfg, &err); - - if (err.GetCode() != IgniteError::IGNITE_SUCCESS) - BOOST_FAIL(err.GetText()) ; - - testCache = grid.GetCache<int64_t, TestType>("cache"); - - // Allocate an environment handle - SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); - - BOOST_REQUIRE(env != NULL) ; - - // We want ODBC 3 support - SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, reinterpret_cast<void*>(SQL_OV_ODBC3), 0); - - // Allocate a connection handle - SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); - - BOOST_REQUIRE(dbc != NULL) ; - - // Connect string - SQLCHAR connectStr[] = "DRIVER={Apache Ignite};SERVER=localhost;PORT=10800;CACHE=cache"; - - SQLCHAR outstr[ODBC_BUFFER_SIZE]; - SQLSMALLINT outstrlen; - - // Connecting to ODBC server. - SQLRETURN ret = SQLDriverConnect(dbc, NULL, connectStr, static_cast<SQLSMALLINT>(sizeof(connectStr)), - outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_COMPLETE); - - if (!SQL_SUCCEEDED(ret)) - { - Ignition::Stop(grid.GetName(), true); - - BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_DBC, dbc)) ; - } - - // Allocate a statement handle - SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); - - BOOST_REQUIRE(stmt != NULL) ; - } - - SqlFunctionTestSuiteFixture::~SqlFunctionTestSuiteFixture() - { - // Releasing statement handle. - SQLFreeHandle(SQL_HANDLE_STMT, stmt); - - // Disconneting from the server. - SQLDisconnect(dbc); - - // Releasing allocated handles. - SQLFreeHandle(SQL_HANDLE_DBC, dbc); - SQLFreeHandle(SQL_HANDLE_ENV, env); - - ignite::Ignition::Stop(grid.GetName(), true); - } - - void SqlFunctionTestSuiteFixture::CheckSingleResult0(const char* request, - SQLSMALLINT type, void* column, SQLLEN bufSize, SQLLEN* resSize) const - { - SQLRETURN ret; - - ret = SQLBindCol(stmt, 1, type, column, bufSize, resSize); - - if (!SQL_SUCCEEDED(ret)) - BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt)) ; - - ret = SQLExecDirect(stmt, reinterpret_cast<SQLCHAR*>(const_cast<char*>(request)), SQL_NTS); - if (!SQL_SUCCEEDED(ret)) - BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt)) ; - - ret = SQLFetch(stmt); - if (!SQL_SUCCEEDED(ret)) - BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt)) ; - - ret = SQLFetch(stmt); - BOOST_CHECK(ret == SQL_NO_DATA) ; - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<std::string>(const char* request, const std::string& expected) - { - SQLCHAR res[ODBC_BUFFER_SIZE] = { 0 }; - SQLLEN resLen = 0; - - CheckSingleResult0(request, SQL_C_CHAR, res, ODBC_BUFFER_SIZE, &resLen); - - std::string actual; - - if (resLen > 0) - actual.assign(reinterpret_cast<char*>(res), static_cast<size_t>(resLen)); - - BOOST_CHECK_EQUAL(actual, expected); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int64_t>(const char* request, const int64_t& expected) - { - CheckSingleResultNum0<int64_t>(request, expected, SQL_C_SBIGINT); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int32_t>(const char* request, const int32_t& expected) - { - CheckSingleResultNum0<int32_t>(request, expected, SQL_C_SLONG); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int16_t>(const char* request, const int16_t& expected) - { - CheckSingleResultNum0<int16_t>(request, expected, SQL_C_SSHORT); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int8_t>(const char* request, const int8_t& expected) - { - CheckSingleResultNum0<int8_t>(request, expected, SQL_C_STINYINT); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<float>(const char* request, const float& expected) - { - SQLFLOAT res = 0; - - CheckSingleResult0(request, SQL_C_FLOAT, &res, 0, 0); - - BOOST_CHECK_CLOSE(static_cast<float>(res), expected, 1E-6f); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<double>(const char* request, const double& expected) - { - SQLDOUBLE res = 0; - - CheckSingleResult0(request, SQL_C_DOUBLE, &res, 0, 0); - - BOOST_CHECK_CLOSE(static_cast<double>(res), expected, 1E-6); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<bool>(const char* request, const bool& expected) - { - SQLCHAR res = 0; - - CheckSingleResult0(request, SQL_C_BIT, &res, 0, 0); - - BOOST_CHECK_EQUAL((res != 0), expected); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<std::string>(const char* request) - { - SQLCHAR res[ODBC_BUFFER_SIZE] = { 0 }; - SQLLEN resLen = 0; - - CheckSingleResult0(request, SQL_C_CHAR, res, ODBC_BUFFER_SIZE, &resLen); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int64_t>(const char* request) - { - CheckSingleResultNum0<int64_t>(request, SQL_C_SBIGINT); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int32_t>(const char* request) - { - CheckSingleResultNum0<int32_t>(request, SQL_C_SLONG); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int16_t>(const char* request) - { - CheckSingleResultNum0<int16_t>(request, SQL_C_SSHORT); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<int8_t>(const char* request) - { - CheckSingleResultNum0<int8_t>(request, SQL_C_STINYINT); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<float>(const char* request) - { - SQLFLOAT res = 0; - - CheckSingleResult0(request, SQL_C_FLOAT, &res, 0, 0); - } - - template<> - void SqlFunctionTestSuiteFixture::CheckSingleResult<double>(const char* request) - { - SQLDOUBLE res = 0; - - CheckSingleResult0(request, SQL_C_DOUBLE, &res, 0, 0); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_numeric_functions_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_numeric_functions_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_numeric_functions_test.cpp index 80ffd83..e16d8c1 100644 --- a/modules/platforms/cpp/odbc-test/src/sql_numeric_functions_test.cpp +++ b/modules/platforms/cpp/odbc-test/src/sql_numeric_functions_test.cpp @@ -41,7 +41,7 @@ #include "test_type.h" #include "test_utils.h" -#include "sql_function_test_suite_fixture.h" +#include "sql_test_suite_fixture.h" using namespace ignite; using namespace ignite::cache; @@ -52,7 +52,7 @@ using namespace boost::unit_test; using ignite::impl::binary::BinaryUtils; -BOOST_FIXTURE_TEST_SUITE(SqlNumericFunctionTestSuite, ignite::SqlFunctionTestSuiteFixture) +BOOST_FIXTURE_TEST_SUITE(SqlNumericFunctionTestSuite, ignite::SqlTestSuiteFixture) BOOST_AUTO_TEST_CASE(TestNumericFunctionAbs) { http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_operators_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_operators_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_operators_test.cpp index db3d3f7..de884ca 100644 --- a/modules/platforms/cpp/odbc-test/src/sql_operators_test.cpp +++ b/modules/platforms/cpp/odbc-test/src/sql_operators_test.cpp @@ -29,12 +29,12 @@ #include <boost/test/unit_test.hpp> #include "test_type.h" -#include "sql_function_test_suite_fixture.h" +#include "sql_test_suite_fixture.h" #include <ignite/common/decimal.h> using namespace ignite; -BOOST_FIXTURE_TEST_SUITE(SqlOperatorTestSuite, ignite::SqlFunctionTestSuiteFixture) +BOOST_FIXTURE_TEST_SUITE(SqlOperatorTestSuite, ignite::SqlTestSuiteFixture) BOOST_AUTO_TEST_CASE(TestOperatorAddInt) { http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_string_functions_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_string_functions_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_string_functions_test.cpp index d22bb83..d1ce194 100644 --- a/modules/platforms/cpp/odbc-test/src/sql_string_functions_test.cpp +++ b/modules/platforms/cpp/odbc-test/src/sql_string_functions_test.cpp @@ -37,7 +37,7 @@ #include "test_type.h" #include "test_utils.h" -#include "sql_function_test_suite_fixture.h" +#include "sql_test_suite_fixture.h" using namespace ignite; using namespace ignite::cache; @@ -48,7 +48,7 @@ using namespace boost::unit_test; using ignite::impl::binary::BinaryUtils; -BOOST_FIXTURE_TEST_SUITE(SqlStringFunctionTestSuite, ignite::SqlFunctionTestSuiteFixture) +BOOST_FIXTURE_TEST_SUITE(SqlStringFunctionTestSuite, ignite::SqlTestSuiteFixture) BOOST_AUTO_TEST_CASE(TestStringFunctionAscii) { http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_system_functions_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_system_functions_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_system_functions_test.cpp index 752925d..30fa036 100644 --- a/modules/platforms/cpp/odbc-test/src/sql_system_functions_test.cpp +++ b/modules/platforms/cpp/odbc-test/src/sql_system_functions_test.cpp @@ -21,13 +21,13 @@ #include <boost/test/unit_test.hpp> -#include "sql_function_test_suite_fixture.h" +#include "sql_test_suite_fixture.h" using namespace ignite; using namespace boost::unit_test; -BOOST_FIXTURE_TEST_SUITE(SqlSystemFunctionTestSuite, ignite::SqlFunctionTestSuiteFixture) +BOOST_FIXTURE_TEST_SUITE(SqlSystemFunctionTestSuite, ignite::SqlTestSuiteFixture) BOOST_AUTO_TEST_CASE(TestSystemFunctionDatabase) { http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_test_suite_fixture.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_test_suite_fixture.cpp b/modules/platforms/cpp/odbc-test/src/sql_test_suite_fixture.cpp new file mode 100644 index 0000000..16e5ea0 --- /dev/null +++ b/modules/platforms/cpp/odbc-test/src/sql_test_suite_fixture.cpp @@ -0,0 +1,271 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "sql_test_suite_fixture.h" + +#include "test_utils.h" + +namespace ignite +{ + SqlTestSuiteFixture::SqlTestSuiteFixture(): + testCache(0), + env(NULL), + dbc(NULL), + stmt(NULL) + { + IgniteConfiguration cfg; + + cfg.jvmOpts.push_back("-Xdebug"); + cfg.jvmOpts.push_back("-Xnoagent"); + cfg.jvmOpts.push_back("-Djava.compiler=NONE"); + cfg.jvmOpts.push_back("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"); + cfg.jvmOpts.push_back("-XX:+HeapDumpOnOutOfMemoryError"); + +#ifdef IGNITE_TESTS_32 + cfg.jvmInitMem = 256; + cfg.jvmMaxMem = 768; +#else + cfg.jvmInitMem = 1024; + cfg.jvmMaxMem = 4096; +#endif + + char* cfgPath = getenv("IGNITE_NATIVE_TEST_ODBC_CONFIG_PATH"); + + BOOST_REQUIRE(cfgPath != 0) ; + + cfg.springCfgPath.assign(cfgPath).append("/queries-test.xml"); + + IgniteError err; + + grid = Ignition::Start(cfg, &err); + + if (err.GetCode() != IgniteError::IGNITE_SUCCESS) + BOOST_FAIL(err.GetText()) ; + + testCache = grid.GetCache<int64_t, TestType>("cache"); + + // Allocate an environment handle + SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); + + BOOST_REQUIRE(env != NULL) ; + + // We want ODBC 3 support + SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, reinterpret_cast<void*>(SQL_OV_ODBC3), 0); + + // Allocate a connection handle + SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); + + BOOST_REQUIRE(dbc != NULL) ; + + // Connect string + SQLCHAR connectStr[] = "DRIVER={Apache Ignite};SERVER=localhost;PORT=10800;CACHE=cache"; + + SQLCHAR outstr[ODBC_BUFFER_SIZE]; + SQLSMALLINT outstrlen; + + // Connecting to ODBC server. + SQLRETURN ret = SQLDriverConnect(dbc, NULL, connectStr, static_cast<SQLSMALLINT>(sizeof(connectStr)), + outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_COMPLETE); + + if (!SQL_SUCCEEDED(ret)) + { + Ignition::Stop(grid.GetName(), true); + + BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_DBC, dbc)) ; + } + + // Allocate a statement handle + SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); + + BOOST_REQUIRE(stmt != NULL) ; + } + + SqlTestSuiteFixture::~SqlTestSuiteFixture() + { + // Releasing statement handle. + SQLFreeHandle(SQL_HANDLE_STMT, stmt); + + // Disconneting from the server. + SQLDisconnect(dbc); + + // Releasing allocated handles. + SQLFreeHandle(SQL_HANDLE_DBC, dbc); + SQLFreeHandle(SQL_HANDLE_ENV, env); + + ignite::Ignition::Stop(grid.GetName(), true); + } + + void SqlTestSuiteFixture::CheckSingleResult0(const char* request, + SQLSMALLINT type, void* column, SQLLEN bufSize, SQLLEN* resSize) const + { + SQLRETURN ret; + + ret = SQLBindCol(stmt, 1, type, column, bufSize, resSize); + + if (!SQL_SUCCEEDED(ret)) + BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt)) ; + + ret = SQLExecDirect(stmt, reinterpret_cast<SQLCHAR*>(const_cast<char*>(request)), SQL_NTS); + + if (!SQL_SUCCEEDED(ret)) + BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt)) ; + + ret = SQLFetch(stmt); + + if (!SQL_SUCCEEDED(ret)) + BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt)) ; + + ret = SQLFetch(stmt); + BOOST_CHECK(ret == SQL_NO_DATA) ; + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<std::string>(const char* request, const std::string& expected) + { + SQLCHAR res[ODBC_BUFFER_SIZE] = { 0 }; + SQLLEN resLen = 0; + + CheckSingleResult0(request, SQL_C_CHAR, res, ODBC_BUFFER_SIZE, &resLen); + + std::string actual; + + if (resLen > 0) + actual.assign(reinterpret_cast<char*>(res), static_cast<size_t>(resLen)); + + BOOST_CHECK_EQUAL(actual, expected); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int64_t>(const char* request, const int64_t& expected) + { + CheckSingleResultNum0<int64_t>(request, expected, SQL_C_SBIGINT); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int32_t>(const char* request, const int32_t& expected) + { + CheckSingleResultNum0<int32_t>(request, expected, SQL_C_SLONG); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int16_t>(const char* request, const int16_t& expected) + { + CheckSingleResultNum0<int16_t>(request, expected, SQL_C_SSHORT); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int8_t>(const char* request, const int8_t& expected) + { + CheckSingleResultNum0<int8_t>(request, expected, SQL_C_STINYINT); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<float>(const char* request, const float& expected) + { + SQLFLOAT res = 0; + + CheckSingleResult0(request, SQL_C_FLOAT, &res, 0, 0); + + BOOST_CHECK_CLOSE(static_cast<float>(res), expected, 1E-6f); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<double>(const char* request, const double& expected) + { + SQLDOUBLE res = 0; + + CheckSingleResult0(request, SQL_C_DOUBLE, &res, 0, 0); + + BOOST_CHECK_CLOSE(static_cast<double>(res), expected, 1E-6); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<bool>(const char* request, const bool& expected) + { + SQLCHAR res = 0; + + CheckSingleResult0(request, SQL_C_BIT, &res, 0, 0); + + BOOST_CHECK_EQUAL((res != 0), expected); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<ignite::Guid>(const char* request, const ignite::Guid& expected) + { + SQLGUID res; + + memset(&res, 0, sizeof(res)); + + CheckSingleResult0(request, SQL_C_GUID, &res, 0, 0); + + BOOST_CHECK_EQUAL(res.Data1, expected.GetMostSignificantBits() & 0xFFFFFFFF00000000ULL >> 32); + BOOST_CHECK_EQUAL(res.Data2, expected.GetMostSignificantBits() & 0x00000000FFFF0000ULL >> 16); + BOOST_CHECK_EQUAL(res.Data3, expected.GetMostSignificantBits() & 0x000000000000FFFFULL); + + for (int i = 0; i < sizeof(res.Data4); ++i) + BOOST_CHECK_EQUAL(res.Data4[i], (expected.GetLeastSignificantBits() & (0xFFULL << (8 * i))) >> (8 * i)); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<std::string>(const char* request) + { + SQLCHAR res[ODBC_BUFFER_SIZE] = { 0 }; + SQLLEN resLen = 0; + + CheckSingleResult0(request, SQL_C_CHAR, res, ODBC_BUFFER_SIZE, &resLen); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int64_t>(const char* request) + { + CheckSingleResultNum0<int64_t>(request, SQL_C_SBIGINT); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int32_t>(const char* request) + { + CheckSingleResultNum0<int32_t>(request, SQL_C_SLONG); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int16_t>(const char* request) + { + CheckSingleResultNum0<int16_t>(request, SQL_C_SSHORT); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<int8_t>(const char* request) + { + CheckSingleResultNum0<int8_t>(request, SQL_C_STINYINT); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<float>(const char* request) + { + SQLFLOAT res = 0; + + CheckSingleResult0(request, SQL_C_FLOAT, &res, 0, 0); + } + + template<> + void SqlTestSuiteFixture::CheckSingleResult<double>(const char* request) + { + SQLDOUBLE res = 0; + + CheckSingleResult0(request, SQL_C_DOUBLE, &res, 0, 0); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp new file mode 100644 index 0000000..ccbb917 --- /dev/null +++ b/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _MSC_VER +# define BOOST_TEST_DYN_LINK +#endif + +#include <boost/test/unit_test.hpp> + +#include "sql_test_suite_fixture.h" + +using namespace ignite; + +using namespace boost::unit_test; + +BOOST_FIXTURE_TEST_SUITE(SqlTypesTestSuite, ignite::SqlTestSuiteFixture) + +BOOST_AUTO_TEST_CASE(TestGuidTrivial) +{ + CheckSingleResult<std::string>("SELECT {guid '04CC382A-0B82-F520-08D0-07A0620C0004'}", + "04cc382a-0b82-f520-08d0-07a0620c0004"); + + CheckSingleResult<std::string>("SELECT {guid '63802467-9f4a-4f71-8fc8-cf2d99a28ddf'}", + "63802467-9f4a-4f71-8fc8-cf2d99a28ddf"); +} + +BOOST_AUTO_TEST_CASE(TestGuidEqualsToColumn) +{ + TestType in1; + TestType in2; + + in1.guidField = Guid(0x638024679f4a4f71, 0x8fc8cf2d99a28ddf); + in2.guidField = Guid(0x04cc382a0b82f520, 0x08d007a0620c0004); + + in1.i32Field = 1; + in2.i32Field = 2; + + testCache.Put(1, in1); + testCache.Put(2, in2); + + CheckSingleResult<int32_t>( + "SELECT i32Field FROM TestType WHERE guidField = {guid '04cc382a-0b82-f520-08d0-07a0620c0004'}", in2.i32Field); +} + + +BOOST_AUTO_TEST_SUITE_END() http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_value_expressions.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_value_expressions.cpp b/modules/platforms/cpp/odbc-test/src/sql_value_expressions.cpp deleted file mode 100644 index e7d6598..0000000 --- a/modules/platforms/cpp/odbc-test/src/sql_value_expressions.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _MSC_VER -# define BOOST_TEST_DYN_LINK -#endif - -#include <boost/test/unit_test.hpp> - -#include "sql_function_test_suite_fixture.h" - -using namespace ignite; - -using namespace boost::unit_test; - -BOOST_FIXTURE_TEST_SUITE(SqlValueExpressionTestSuite, ignite::SqlFunctionTestSuiteFixture) - -BOOST_AUTO_TEST_CASE(TestCase) -{ - TestType in; - - in.i32Field = 82; - - testCache.Put(1, in); - - CheckSingleResult<int32_t>( - "SELECT " - "CASE i32Field WHEN 82 " - "THEN (i32Field / 2) " - "ELSE (i32Field / 3) " - "END " - "FROM TestType", in.i32Field / 2); - - - CheckSingleResult<int32_t>( - "SELECT " - "CASE i32Field WHEN 22 " - "THEN (i32Field / 2) " - "ELSE (i32Field / 3) " - "END " - "FROM TestType", in.i32Field / 3);; -} - -BOOST_AUTO_TEST_CASE(TestCast) -{ - TestType in; - - in.i32Field = 12345; - in.strField = "54321"; - - testCache.Put(1, in); - - CheckSingleResult<int32_t>("SELECT CAST(strField AS INT) + i32Field FROM TestType", - common::LexicalCast<int32_t>(in.strField) + in.i32Field); - - CheckSingleResult<std::string>("SELECT CAST(i32Field AS VARCHAR) || strField FROM TestType", - common::LexicalCast<std::string>(in.i32Field) + in.strField); -} - -BOOST_AUTO_TEST_CASE(TestCoalesce) -{ - CheckSingleResult<std::string>("SELECT COALESCE('One', 'Two', 'Three')", "One"); - CheckSingleResult<std::string>("SELECT COALESCE(NULL, 'Two', 'Three')", "Two"); - CheckSingleResult<std::string>("SELECT COALESCE(NULL, 'Two', NULL)", "Two"); - CheckSingleResult<std::string>("SELECT COALESCE(NULL, NULL, 'Three')", "Three"); -} - -BOOST_AUTO_TEST_CASE(TestNullif) -{ - TestType in; - - in.strField = "SomeValue"; - - testCache.Put(1, in); - - CheckSingleResult<std::string>("SELECT NULLIF(strField, 'blablabla') FROM TestType", in.strField); - CheckSingleResult<std::string>("SELECT NULLIF(strField, 'SomeValue') FROM TestType", ""); -} - -BOOST_AUTO_TEST_SUITE_END() http://git-wip-us.apache.org/repos/asf/ignite/blob/28917034/modules/platforms/cpp/odbc-test/src/sql_value_expressions_test.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/sql_value_expressions_test.cpp b/modules/platforms/cpp/odbc-test/src/sql_value_expressions_test.cpp new file mode 100644 index 0000000..eb9b6ea --- /dev/null +++ b/modules/platforms/cpp/odbc-test/src/sql_value_expressions_test.cpp @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _MSC_VER +# define BOOST_TEST_DYN_LINK +#endif + +#include <boost/test/unit_test.hpp> + +#include "sql_test_suite_fixture.h" + +using namespace ignite; + +using namespace boost::unit_test; + +BOOST_FIXTURE_TEST_SUITE(SqlValueExpressionTestSuite, ignite::SqlTestSuiteFixture) + +BOOST_AUTO_TEST_CASE(TestCase) +{ + TestType in; + + in.i32Field = 82; + + testCache.Put(1, in); + + CheckSingleResult<int32_t>( + "SELECT " + "CASE i32Field WHEN 82 " + "THEN (i32Field / 2) " + "ELSE (i32Field / 3) " + "END " + "FROM TestType", in.i32Field / 2); + + + CheckSingleResult<int32_t>( + "SELECT " + "CASE i32Field WHEN 22 " + "THEN (i32Field / 2) " + "ELSE (i32Field / 3) " + "END " + "FROM TestType", in.i32Field / 3);; +} + +BOOST_AUTO_TEST_CASE(TestCast) +{ + TestType in; + + in.i32Field = 12345; + in.strField = "54321"; + + testCache.Put(1, in); + + CheckSingleResult<int32_t>("SELECT CAST(strField AS INT) + i32Field FROM TestType", + common::LexicalCast<int32_t>(in.strField) + in.i32Field); + + CheckSingleResult<std::string>("SELECT CAST(i32Field AS VARCHAR) || strField FROM TestType", + common::LexicalCast<std::string>(in.i32Field) + in.strField); +} + +BOOST_AUTO_TEST_CASE(TestCoalesce) +{ + CheckSingleResult<std::string>("SELECT COALESCE('One', 'Two', 'Three')", "One"); + CheckSingleResult<std::string>("SELECT COALESCE(NULL, 'Two', 'Three')", "Two"); + CheckSingleResult<std::string>("SELECT COALESCE(NULL, 'Two', NULL)", "Two"); + CheckSingleResult<std::string>("SELECT COALESCE(NULL, NULL, 'Three')", "Three"); +} + +BOOST_AUTO_TEST_CASE(TestNullif) +{ + TestType in; + + in.strField = "SomeValue"; + + testCache.Put(1, in); + + CheckSingleResult<std::string>("SELECT NULLIF(strField, 'blablabla') FROM TestType", in.strField); + CheckSingleResult<std::string>("SELECT NULLIF(strField, 'SomeValue') FROM TestType", ""); +} + +BOOST_AUTO_TEST_SUITE_END()
