You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/09/27 15:26:42 UTC

[52/68] [abbrv] ignite git commit: Merge branch 'ignite-1.6.9' into ignite-1.7.2

Merge branch 'ignite-1.6.9' into ignite-1.7.2


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bbc97580
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bbc97580
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bbc97580

Branch: refs/heads/ignite-comm-opts2
Commit: bbc97580492609e2e4fc3d92b08b4740b984d78f
Parents: 4f9ac81 350e846
Author: isapego <is...@gridgain.com>
Authored: Mon Sep 26 20:17:43 2016 +0300
Committer: isapego <is...@gridgain.com>
Committed: Mon Sep 26 20:17:43 2016 +0300

----------------------------------------------------------------------
 .../src/application_data_buffer_test.cpp        | 129 ++++---
 .../platforms/cpp/odbc-test/src/column_test.cpp |  10 +-
 .../cpp/odbc-test/src/queries_test.cpp          | 143 +++++++-
 .../platforms/cpp/odbc-test/src/row_test.cpp    |   4 +-
 modules/platforms/cpp/odbc/Makefile.am          |   3 +-
 .../platforms/cpp/odbc/include/ignite/odbc.h    |   6 +-
 .../ignite/odbc/app/application_data_buffer.h   |  58 +++-
 .../odbc/include/ignite/odbc/app/parameter.h    |  27 +-
 .../cpp/odbc/include/ignite/odbc/common_types.h |  18 +-
 .../include/ignite/odbc/config/configuration.h  |  17 +-
 .../cpp/odbc/include/ignite/odbc/statement.h    |  58 +++-
 .../platforms/cpp/odbc/project/vs/module.def    |   1 -
 .../platforms/cpp/odbc/project/vs/odbc.vcxproj  |   2 +-
 .../odbc/src/app/application_data_buffer.cpp    | 343 ++++++++++++++-----
 .../platforms/cpp/odbc/src/app/parameter.cpp    | 126 ++++++-
 modules/platforms/cpp/odbc/src/common_types.cpp |   3 +
 .../cpp/odbc/src/config/configuration.cpp       |  27 ++
 .../cpp/odbc/src/config/connection_info.cpp     |  35 +-
 modules/platforms/cpp/odbc/src/connection.cpp   |   2 +-
 .../odbc/src/diagnostic/diagnostic_record.cpp   |  18 +
 modules/platforms/cpp/odbc/src/entry_points.cpp |  30 +-
 modules/platforms/cpp/odbc/src/odbc.cpp         |  45 ++-
 modules/platforms/cpp/odbc/src/statement.cpp    | 150 +++++++-
 .../NuGet/LINQPad/PutGetExample.linq            |   2 +-
 .../NuGet/LINQPad/QueryExample.linq             |   6 +-
 .../NuGet/LINQPad/QueryExample.linq             |   4 +-
 26 files changed, 1000 insertions(+), 267 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/bbc97580/modules/platforms/cpp/odbc-test/src/queries_test.cpp
----------------------------------------------------------------------
diff --cc modules/platforms/cpp/odbc-test/src/queries_test.cpp
index a82ab7e,f0168bd..73d57c9
--- a/modules/platforms/cpp/odbc-test/src/queries_test.cpp
+++ b/modules/platforms/cpp/odbc-test/src/queries_test.cpp
@@@ -562,131 -543,128 +570,254 @@@ BOOST_AUTO_TEST_CASE(TestOneRowStringLe
      BOOST_CHECK(ret == SQL_NO_DATA);
  }
  
+ BOOST_AUTO_TEST_CASE(TestDataAtExecution)
+ {
+     Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;CACHE=cache");
+ 
+     SQLRETURN ret;
+ 
+     TestType in1(1, 2, 3, 4, "5", 6.0f, 7.0, true, Guid(8, 9), BinaryUtils::MakeDateGmt(1987, 6, 5),
+         BinaryUtils::MakeTimestampGmt(1998, 12, 27, 1, 2, 3, 456));
+ 
+     TestType in2(8, 7, 6, 5, "4", 3.0f, 2.0, false, Guid(1, 0), BinaryUtils::MakeDateGmt(1976, 1, 12),
+         BinaryUtils::MakeTimestampGmt(1978, 8, 21, 23, 13, 45, 999999999));
+ 
+     testCache.Put(1, in1);
+     testCache.Put(2, in2);
+ 
+     const size_t columnsCnt = 11;
+ 
+     SQLLEN columnLens[columnsCnt] = { 0 };
+     SQLCHAR columns[columnsCnt][ODBC_BUFFER_SIZE] = { 0 };
+ 
+     // Binding columns.
+     for (SQLSMALLINT i = 0; i < columnsCnt; ++i)
+     {
+         ret = SQLBindCol(stmt, i + 1, SQL_C_CHAR, &columns[i], ODBC_BUFFER_SIZE, &columnLens[i]);
+ 
+         if (!SQL_SUCCEEDED(ret))
+             BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+     }
+ 
+     SQLCHAR request[] = "SELECT i8Field, i16Field, i32Field, i64Field, strField, "
+         "floatField, doubleField, boolField, guidField, dateField, timestampField FROM TestType "
+         "WHERE i32Field = ? AND strField = ?";
+ 
+     ret = SQLPrepare(stmt, request, SQL_NTS);
+ 
+     SQLLEN ind1 = 1;
+     SQLLEN ind2 = 2;
+ 
+     SQLLEN len1 = SQL_DATA_AT_EXEC;
+     SQLLEN len2 = SQL_LEN_DATA_AT_EXEC(static_cast<SQLLEN>(in1.strField.size()));
+ 
+     ret = SQLBindParam(stmt, 1, SQL_C_SLONG, SQL_INTEGER, 100, 100, &ind1, &len1);
+ 
+     if (!SQL_SUCCEEDED(ret))
+         BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+ 
+     ret = SQLBindParam(stmt, 2, SQL_C_CHAR, SQL_VARCHAR, 100, 100, &ind2, &len2);
+ 
+     if (!SQL_SUCCEEDED(ret))
+         BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+ 
+     ret = SQLExecute(stmt);
+ 
+     BOOST_REQUIRE_EQUAL(ret, SQL_NEED_DATA);
+ 
+     void* oind;
+ 
+     ret = SQLParamData(stmt, &oind);
+ 
+     BOOST_REQUIRE_EQUAL(ret, SQL_NEED_DATA);
+ 
+     if (oind == &ind1)
+         ret = SQLPutData(stmt, &in1.i32Field, 0);
+     else if (oind == &ind2)
+         ret = SQLPutData(stmt, (SQLPOINTER)in1.strField.c_str(), (SQLLEN)in1.strField.size());
+     else
+         BOOST_FAIL("Unknown indicator value");
+ 
+     if (!SQL_SUCCEEDED(ret))
+         BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+ 
+     ret = SQLParamData(stmt, &oind);
+ 
+     BOOST_REQUIRE_EQUAL(ret, SQL_NEED_DATA);
+ 
+     if (oind == &ind1)
+         ret = SQLPutData(stmt, &in1.i32Field, 0);
+     else if (oind == &ind2)
+         ret = SQLPutData(stmt, (SQLPOINTER)in1.strField.c_str(), (SQLLEN)in1.strField.size());
+     else
+         BOOST_FAIL("Unknown indicator value");
+ 
+     if (!SQL_SUCCEEDED(ret))
+         BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+ 
+     ret = SQLParamData(stmt, &oind);
+ 
+     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));
+ 
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[0])), "1");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[1])), "2");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[2])), "3");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[3])), "4");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[4])), "5");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[5])), "6");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[6])), "7");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[7])), "1");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[8])), "00000000-0000-0008-0000-000000000009");
+     // Such format is used because Date returned as Timestamp.
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[9])), "1987-06-05 00:00:00");
+     BOOST_CHECK_EQUAL(std::string(reinterpret_cast<char*>(columns[10])), "1998-12-27 01:02:03");
+ 
+     BOOST_CHECK_EQUAL(columnLens[0], 1);
+     BOOST_CHECK_EQUAL(columnLens[1], 1);
+     BOOST_CHECK_EQUAL(columnLens[2], 1);
+     BOOST_CHECK_EQUAL(columnLens[3], 1);
+     BOOST_CHECK_EQUAL(columnLens[4], 1);
+     BOOST_CHECK_EQUAL(columnLens[5], 1);
+     BOOST_CHECK_EQUAL(columnLens[6], 1);
+     BOOST_CHECK_EQUAL(columnLens[7], 1);
+     BOOST_CHECK_EQUAL(columnLens[8], 36);
+     BOOST_CHECK_EQUAL(columnLens[9], 19);
+     BOOST_CHECK_EQUAL(columnLens[10], 19);
+ 
+     ret = SQLFetch(stmt);
+     BOOST_CHECK(ret == SQL_NO_DATA);
+ }
+ 
 +BOOST_AUTO_TEST_CASE(TestDistributedJoins)
 +{
 +    // Starting additional node.
 +    Ignite node1 = StartAdditionalNode("Node1");
 +    Ignite node2 = StartAdditionalNode("Node2");
 +
 +    const int entriesNum = 1000;
 +
 +    // Filling cache with data.
 +    for (int i = 0; i < entriesNum; ++i)
 +    {
 +        TestType entry;
 +
 +        entry.i32Field = i;
 +        entry.i64Field = entriesNum - i - 1;
 +
 +        testCache.Put(i, entry);
 +    }
 +
 +    Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;CACHE=cache");
 +
 +    SQLRETURN ret;
 +
 +    const size_t columnsCnt = 2;
 +
 +    SQLBIGINT columns[columnsCnt] = { 0 };
 +
 +    // Binding colums.
 +    for (SQLSMALLINT i = 0; i < columnsCnt; ++i)
 +    {
 +        ret = SQLBindCol(stmt, i + 1, SQL_C_SLONG, &columns[i], 0, 0);
 +
 +        if (!SQL_SUCCEEDED(ret))
 +            BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 +    }
 +
 +    SQLCHAR request[] =
 +        "SELECT T0.i32Field, T1.i64Field FROM TestType AS T0 "
 +        "INNER JOIN TestType AS T1 "
 +        "ON (T0.i32Field = T1.i64Field)";
 +
 +    ret = SQLExecDirect(stmt, request, SQL_NTS);
 +
 +    if (!SQL_SUCCEEDED(ret))
 +        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 +
 +    int rowsNum = CountRows(stmt);
 +
 +    BOOST_CHECK_GT(rowsNum, 0);
 +    BOOST_CHECK_LT(rowsNum, entriesNum);
 +
 +    Disconnect();
 +
 +    Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;CACHE=cache;DISTRIBUTED_JOINS=true;");
 +
 +    // Binding colums.
 +    for (SQLSMALLINT i = 0; i < columnsCnt; ++i)
 +    {
 +        ret = SQLBindCol(stmt, i + 1, SQL_C_SLONG, &columns[i], 0, 0);
 +
 +        if (!SQL_SUCCEEDED(ret))
 +            BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 +    }
 +
 +    ret = SQLExecDirect(stmt, request, SQL_NTS);
 +
 +    if (!SQL_SUCCEEDED(ret))
 +        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 +
 +    rowsNum = CountRows(stmt);
 +
 +    BOOST_CHECK_EQUAL(rowsNum, entriesNum);
 +}
 +
 +BOOST_AUTO_TEST_CASE(TestDistributedJoinsWithOldVersion)
 +{
 +    // Starting additional node.
 +    Ignite node1 = StartAdditionalNode("Node1");
 +    Ignite node2 = StartAdditionalNode("Node2");
 +
 +    const int entriesNum = 1000;
 +
 +    // Filling cache with data.
 +    for (int i = 0; i < entriesNum; ++i)
 +    {
 +        TestType entry;
 +
 +        entry.i32Field = i;
 +        entry.i64Field = entriesNum - i - 1;
 +
 +        testCache.Put(i, entry);
 +    }
 +
 +    Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;CACHE=cache;DISTRIBUTED_JOINS=true;PROTOCOL_VERSION=1.6.0");
 +
 +    SQLRETURN ret;
 +
 +    const size_t columnsCnt = 2;
 +
 +    SQLBIGINT columns[columnsCnt] = { 0 };
 +
 +    // Binding colums.
 +    for (SQLSMALLINT i = 0; i < columnsCnt; ++i)
 +    {
 +        ret = SQLBindCol(stmt, i + 1, SQL_C_SLONG, &columns[i], 0, 0);
 +
 +        if (!SQL_SUCCEEDED(ret))
 +            BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 +    }
 +
 +    SQLCHAR request[] =
 +        "SELECT T0.i32Field, T1.i64Field FROM TestType AS T0 "
 +        "INNER JOIN TestType AS T1 "
 +        "ON (T0.i32Field = T1.i64Field)";
 +
 +    ret = SQLExecDirect(stmt, request, SQL_NTS);
 +
 +    if (!SQL_SUCCEEDED(ret))
 +        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 +
 +    int rowsNum = CountRows(stmt);
 +
 +    BOOST_CHECK_GT(rowsNum, 0);
 +    BOOST_CHECK_LT(rowsNum, entriesNum);
 +}
 +
  
  BOOST_AUTO_TEST_SUITE_END()

http://git-wip-us.apache.org/repos/asf/ignite/blob/bbc97580/modules/platforms/cpp/odbc/include/ignite/odbc/config/configuration.h
----------------------------------------------------------------------
diff --cc modules/platforms/cpp/odbc/include/ignite/odbc/config/configuration.h
index 05a9ec3,4fe4f1b..c0d102b
--- a/modules/platforms/cpp/odbc/include/ignite/odbc/config/configuration.h
+++ b/modules/platforms/cpp/odbc/include/ignite/odbc/config/configuration.h
@@@ -269,52 -251,9 +263,49 @@@ namespace ignit
                   *
                   * @param address Address.
                   */
-                 void SetAddress(const std::string& address)
-                 {
-                     arguments[Key::address] = address;
-                 }
+                 void SetAddress(const std::string& address);
  
                  /**
 +                 * Check distributed joins flag.
 +                 *
 +                 * @return True if distributed joins are enabled.
 +                 */
 +                bool IsDistributedJoins() const
 +                {
 +                    return GetBoolValue(Key::distributedJoins, DefaultValue::distributedJoins);
 +                }
 +
 +                /**
 +                 * Set distributed joins.
 +                 *
 +                 * @param val Value to set.
 +                 */
 +                void SetDistributedJoins(bool val)
 +                {
 +                    SetBoolValue(Key::distributedJoins, val);
 +                }
 +
 +                /**
 +                 * Check enforce join order flag.
 +                 *
 +                 * @return True if enforcing of join order is enabled.
 +                 */
 +                bool IsEnforceJoinOrder() const
 +                {
 +                    return GetBoolValue(Key::enforceJoinOrder, DefaultValue::enforceJoinOrder);
 +                }
 +
 +                /**
 +                 * Set enforce joins.
 +                 *
 +                 * @param val Value to set.
 +                 */
 +                void SetEnforceJoinOrder(bool val)
 +                {
 +                    SetBoolValue(Key::enforceJoinOrder, val);
 +                }
 +
 +                /**
                   * Get protocol version.
                   *
                   * @return Protocol version.

http://git-wip-us.apache.org/repos/asf/ignite/blob/bbc97580/modules/platforms/cpp/odbc/project/vs/odbc.vcxproj
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/bbc97580/modules/platforms/cpp/odbc/src/config/configuration.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/bbc97580/modules/platforms/cpp/odbc/src/connection.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/bbc97580/modules/platforms/cpp/odbc/src/odbc.cpp
----------------------------------------------------------------------
diff --cc modules/platforms/cpp/odbc/src/odbc.cpp
index 74d0f9d,9df64d3..a4c750e
--- a/modules/platforms/cpp/odbc/src/odbc.cpp
+++ b/modules/platforms/cpp/odbc/src/odbc.cpp
@@@ -754,7 -753,7 +753,7 @@@ namespace ignit
          LOG_MSG("columnSizeRes: %lld\n", columnSizeRes);
          LOG_MSG("decimalDigitsRes: %lld\n", decimalDigitsRes);
          LOG_MSG("nullableRes: %lld\n", nullableRes);
--        LOG_MSG("columnNameBuf: %s\n", columnNameBuf ? columnNameBuf : "<null>");
++        LOG_MSG("columnNameBuf: %s\n", columnNameBuf ? reinterpret_cast<const char*>(columnNameBuf) : "<null>");
          LOG_MSG("columnNameLen: %d\n", columnNameLen ? *columnNameLen : -1);
  
          if (dataType)