You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by is...@apache.org on 2018/09/22 13:10:00 UTC
ignite git commit: IGNITE-8930: ODBC cursors closed properly on
server side
Repository: ignite
Updated Branches:
refs/heads/master 1382df19f -> d9f2b2040
IGNITE-8930: ODBC cursors closed properly on server side
This closes #4810
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d9f2b204
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d9f2b204
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d9f2b204
Branch: refs/heads/master
Commit: d9f2b204099effe9fd5a4d8809e91fbda826b062
Parents: 1382df1
Author: Igor Sapego <is...@apache.org>
Authored: Sat Sep 22 16:09:08 2018 +0300
Committer: Igor Sapego <is...@apache.org>
Committed: Sat Sep 22 16:09:08 2018 +0300
----------------------------------------------------------------------
.../cpp/odbc-test/src/queries_test.cpp | 44 ++++++++++++++++++++
.../platforms/cpp/odbc/src/query/data_query.cpp | 10 +----
2 files changed, 46 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9f2b204/modules/platforms/cpp/odbc-test/src/queries_test.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc-test/src/queries_test.cpp b/modules/platforms/cpp/odbc-test/src/queries_test.cpp
index fb4557f..471f7d7 100644
--- a/modules/platforms/cpp/odbc-test/src/queries_test.cpp
+++ b/modules/platforms/cpp/odbc-test/src/queries_test.cpp
@@ -2081,6 +2081,50 @@ BOOST_AUTO_TEST_CASE(TestManyCursors)
}
}
+BOOST_AUTO_TEST_CASE(TestManyCursors2)
+{
+ Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;SCHEMA=cache");
+
+ SQLRETURN ret = SQLFreeHandle(SQL_HANDLE_STMT, stmt);
+
+ if (!SQL_SUCCEEDED(ret))
+ BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+ for (int32_t i = 0; i < 1000; ++i)
+ {
+ ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
+
+ if (!SQL_SUCCEEDED(ret))
+ BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+ SQLCHAR req[] = "SELECT 1";
+
+ ret = SQLExecDirect(stmt, req, SQL_NTS);
+
+ if (!SQL_SUCCEEDED(ret))
+ BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+ int32_t res = 0;
+ SQLLEN resLen = 0;
+ ret = SQLBindCol(stmt, 1, SQL_INTEGER, &res, 0, &resLen);
+
+ 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_REQUIRE_EQUAL(res, 1);
+
+ ret = SQLFreeHandle(SQL_HANDLE_STMT, stmt);
+
+ if (!SQL_SUCCEEDED(ret))
+ BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+ }
+}
+
BOOST_AUTO_TEST_CASE(TestManyCursorsTwoSelects1)
{
Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;SCHEMA=cache");
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9f2b204/modules/platforms/cpp/odbc/src/query/data_query.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/src/query/data_query.cpp b/modules/platforms/cpp/odbc/src/query/data_query.cpp
index dbaa848..4ba354d 100644
--- a/modules/platforms/cpp/odbc/src/query/data_query.cpp
+++ b/modules/platforms/cpp/odbc/src/query/data_query.cpp
@@ -204,19 +204,13 @@ namespace ignite
bool DataQuery::IsClosedRemotely() const
{
- for (size_t i = rowsAffectedIdx + 1; i < rowsAffected.size(); ++i)
+ for (size_t i = 0; i < rowsAffected.size(); ++i)
{
if (rowsAffected[i] < 0)
return false;
}
- if (rowsAffected[rowsAffectedIdx] >= 0)
- return true;
-
- if (cachedNextPage.get())
- return cachedNextPage->IsLast();
-
- return cursor->IsClosedRemotely();
+ return true;
}
SqlResult::Type DataQuery::MakeRequestExecute()