GNITE-3235 Failed to initialize primitive boolean cache property of superclass
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7b3f4944 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7b3f4944 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7b3f4944 Branch: refs/heads/ignite-3235 Commit: 7b3f4944dd4feb92cf88ae13f4ad0818b1a4f159 Parents: 50a8ec2 Author: Anton Vinogradov <a...@apache.org> Authored: Fri Jun 3 19:10:36 2016 +0300 Committer: Anton Vinogradov <a...@apache.org> Committed: Fri Jun 3 19:10:36 2016 +0300 ---------------------------------------------------------------------- .../internal/jdbc2/JdbcResultSetSelfTest.java | 60 +++++++++++++++++++- .../processors/query/GridQueryProcessor.java | 58 +++++++++---------- 2 files changed, 87 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7b3f4944/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 3607f53..8655b4f 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 @@ -60,7 +60,8 @@ public class JdbcResultSetSelfTest extends GridCommonAbstractTest { /** SQL query. */ private static final String SQL = "select id, boolVal, byteVal, shortVal, intVal, longVal, floatVal, " + - "doubleVal, bigVal, strVal, arrVal, dateVal, timeVal, tsVal, urlVal, f1, f2, f3, _val " + + "doubleVal, bigVal, strVal, arrVal, dateVal, timeVal, tsVal, urlVal, f1, f2, f3, _val, " + + "boolVal2, boolVal3 " + "from TestObject where id = 1"; /** Statement. */ @@ -142,6 +143,8 @@ public class JdbcResultSetSelfTest extends GridCommonAbstractTest { TestObject o = new TestObject(id); o.boolVal = true; + o.boolVal2 = true; + o.boolVal3 = true; o.byteVal = 1; o.shortVal = 1; o.intVal = 1; @@ -182,6 +185,46 @@ public class JdbcResultSetSelfTest extends GridCommonAbstractTest { /** * @throws Exception If failed. */ + public void testBoolean2() throws Exception { + ResultSet rs = stmt.executeQuery(SQL); + + int cnt = 0; + + while (rs.next()) { + if (cnt == 0) { + assert rs.getBoolean("boolVal2"); + assert rs.getBoolean(20); + } + + cnt++; + } + + assert cnt == 1; + } + + /** + * @throws Exception If failed. + */ + public void testBoolean3() throws Exception { + ResultSet rs = stmt.executeQuery(SQL); + + int cnt = 0; + + while (rs.next()) { + if (cnt == 0) { + assert rs.getBoolean("boolVal3"); + assert rs.getBoolean(21); + } + + cnt++; + } + + assert cnt == 1; + } + + /** + * @throws Exception If failed. + */ public void testByte() throws Exception { ResultSet rs = stmt.executeQuery(SQL); @@ -562,7 +605,20 @@ public class JdbcResultSetSelfTest extends GridCommonAbstractTest { * Test object. */ @SuppressWarnings("UnusedDeclaration") - private static class TestObject implements Serializable { + private static class BaseTestObject implements Serializable { + /** */ + @QuerySqlField(index = false) + protected Boolean boolVal2; + + @QuerySqlField(index = false) + protected boolean boolVal3; + } + + /** + * Test object. + */ + @SuppressWarnings("UnusedDeclaration") + private static class TestObject extends BaseTestObject { /** */ @QuerySqlField private final int id; http://git-wip-us.apache.org/repos/asf/ignite/blob/7b3f4944/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java index 074e7e5..442763f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java @@ -17,6 +17,30 @@ package org.apache.ignite.internal.processors.query; +import java.lang.reflect.AccessibleObject; +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.UUID; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutorService; +import javax.cache.Cache; +import javax.cache.CacheException; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteException; import org.apache.ignite.IgniteLogger; @@ -66,31 +90,6 @@ import org.apache.ignite.spi.indexing.IndexingQueryFilter; import org.jetbrains.annotations.Nullable; import org.jsr166.ConcurrentHashMap8; -import javax.cache.Cache; -import javax.cache.CacheException; -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Field; -import java.lang.reflect.Member; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.sql.Time; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; -import java.util.UUID; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutorService; - import static org.apache.ignite.events.EventType.EVT_CACHE_QUERY_EXECUTED; import static org.apache.ignite.internal.IgniteComponentType.INDEXING; import static org.apache.ignite.internal.processors.query.GridQueryIndexType.FULLTEXT; @@ -1681,14 +1680,15 @@ public class GridQueryProcessor extends GridProcessorAdapter { // No-op. } - if (tmp == null) { + Class cls0 = cls; + + while (tmp == null && cls0 != null) try { - tmp = new ClassProperty(cls.getDeclaredField(prop), key, alias, coCtx); + tmp = new ClassProperty(cls0.getDeclaredField(prop), key, alias, coCtx); } catch (NoSuchFieldException ignored) { - // No-op. + cls0 = cls0.getSuperclass(); } - } if (tmp == null) { try {