You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/12/05 12:38:31 UTC
[27/52] ignite git commit: IGNITE-4279: Fixed JdbcResultSetSelfTest.
This closes #1284.
IGNITE-4279: Fixed JdbcResultSetSelfTest. This closes #1284.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7b8d5308
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7b8d5308
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7b8d5308
Branch: refs/heads/master
Commit: 7b8d530858b997aeedc2f0281bbb707d9d8b86ef
Parents: 5b2eacf
Author: Alexander Paschenko <al...@gmail.com>
Authored: Fri Nov 25 14:22:17 2016 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Fri Nov 25 14:22:17 2016 +0300
----------------------------------------------------------------------
.../internal/jdbc2/JdbcResultSetSelfTest.java | 18 ++++++++
.../ignite/internal/jdbc2/JdbcResultSet.java | 47 +++++++++++++++++---
.../ignite/internal/jdbc2/JdbcStatement.java | 4 +-
3 files changed, 62 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b8d5308/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java
index 131ed74..1b5223e 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java
@@ -596,6 +596,24 @@ public class JdbcResultSetSelfTest extends GridCommonAbstractTest {
stmt.setFetchSize(0);
}
+ /**
+ * @throws Exception If failed.
+ */
+ public void testNewQueryTaskFetchSize() throws Exception {
+ stmt.setFetchSize(1);
+
+ boolean res = stmt.execute("select * from TestObject where id > 0");
+
+ assertTrue(res);
+
+ ResultSet rs = stmt.getResultSet();
+
+ assertTrue(rs.next());
+ assertTrue(rs.next());
+ assertTrue(rs.next());
+
+ stmt.setFetchSize(0);
+ }
/**
* @throws Exception If failed.
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b8d5308/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
index c1a5f4c..b53521e 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java
@@ -88,10 +88,11 @@ public class JdbcResultSet implements ResultSet {
/** Fetch size. */
private int fetchSize;
+ /** Which query task to use under the hood - {@link JdbcQueryTaskV2} if {@code true}, {@link JdbcQueryTask} otherwise. */
+ private final boolean useNewQryTask;
+
/**
- * Creates new result set with predefined fields.
- * Result set created with this constructor will
- * never execute remote tasks.
+ * Creates new result set.
*
* @param uuid Query UUID.
* @param stmt Statement.
@@ -102,6 +103,39 @@ public class JdbcResultSet implements ResultSet {
*/
JdbcResultSet(@Nullable UUID uuid, JdbcStatement stmt, List<String> tbls, List<String> cols,
List<String> types, Collection<List<?>> fields, boolean finished) {
+ this(uuid, stmt, tbls, cols, types, fields, finished, false);
+ }
+
+ /**
+ * Creates new result set that will be based on {@link JdbcQueryTaskV2}. This method is intended for use inside
+ * {@link JdbcStatement} only.
+ *
+ * @param uuid Query UUID.
+ * @param stmt Statement.
+ * @param tbls Table names.
+ * @param cols Column names.
+ * @param types Types.
+ * @param fields Fields.
+ */
+ static JdbcResultSet resultSetForQueryTaskV2(@Nullable UUID uuid, JdbcStatement stmt, List<String> tbls,
+ List<String> cols, List<String> types, Collection<List<?>> fields, boolean finished) {
+ return new JdbcResultSet(uuid, stmt, tbls, cols, types, fields, finished, true);
+ }
+
+ /**
+ * Creates new result set.
+ *
+ * @param uuid Query UUID.
+ * @param stmt Statement.
+ * @param tbls Table names.
+ * @param cols Column names.
+ * @param types Types.
+ * @param fields Fields.
+ * @param useNewQryTask Which query task to use under the hood - {@link JdbcQueryTaskV2} if {@code true},
+ * {@link JdbcQueryTask} otherwise.
+ */
+ private JdbcResultSet(@Nullable UUID uuid, JdbcStatement stmt, List<String> tbls, List<String> cols,
+ List<String> types, Collection<List<?>> fields, boolean finished, boolean useNewQryTask) {
assert stmt != null;
assert tbls != null;
assert cols != null;
@@ -116,6 +150,8 @@ public class JdbcResultSet implements ResultSet {
this.finished = finished;
this.it = fields.iterator();
+
+ this.useNewQryTask = useNewQryTask;
}
/** {@inheritDoc} */
@@ -147,7 +183,7 @@ public class JdbcResultSet implements ResultSet {
boolean loc = nodeId == null;
- if (conn.isDmlSupported()) {
+ if (useNewQryTask) {
// Connections from new clients send queries with new tasks, so we have to continue in the same manner
JdbcQueryTaskV2 qryTask = new JdbcQueryTaskV2(loc ? ignite : null, conn.cacheName(), null, true, loc, null,
fetchSize, uuid, conn.isLocalQuery(), conn.isCollocatedQuery(), conn.isDistributedJoins());
@@ -209,8 +245,9 @@ public class JdbcResultSet implements ResultSet {
* If this result set is associated with locally executed query then query cursor will also closed.
*/
void closeInternal() throws SQLException {
- if (((JdbcConnection)stmt.getConnection()).nodeId() == null && uuid != null)
+ if (((JdbcConnection)stmt.getConnection()).nodeId() == null && uuid != null) {
JdbcQueryTask.remove(uuid);
+ }
closed = true;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7b8d5308/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
index dbb2390..5621058 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcStatement.java
@@ -346,8 +346,8 @@ public class JdbcStatement implements Statement {
loc ? qryTask.call() : ignite.compute(ignite.cluster().forNodeId(nodeId)).call(qryTask);
if (res.isQuery()) {
- JdbcResultSet rs = new JdbcResultSet(uuid, this, res.getTbls(), res.getCols(), res.getTypes(),
- res.getRows(), res.isFinished());
+ JdbcResultSet rs = JdbcResultSet.resultSetForQueryTaskV2(uuid, this, res.getTbls(), res.getCols(),
+ res.getTypes(), res.getRows(), res.isFinished());
rs.setFetchSize(fetchSize);