Hi, Looks like the problem has been fixed in ignite-2.1.
Please take a look at the ticket IGNITE-5190. [1] [1] https://issues.apache.org/jira/browse/IGNITE-5190 On 24.08.2017 19:23, igor.tanackovic wrote:
I have a query which can be executed in H2 console but fails on Ignite's .query(sql).getAll(): SELECT i.* FROM "cache".CACHEDITEM AS i inner JOIN ( SELECT ci.position, MAX(ci.lastModifiedTime) AS modifiedTime FROM "cache".CACHEDITEM AS ci WHERE ci.startTime<=NOW() AND ci.endTime>NOW() AND ci.stripeId = 301 GROUP BY ci.position ORDER BY ci.position) i2 WHERE i.position=i2.position AND i.lastModifiedTime=i2.modifiedTime AND i.startTime<=NOW() AND i.endTime>NOW() AND i.stripeId=301 GROUP BY i.position ORDER BY i.position Caused by: org.apache.ignite.IgniteCheckedException: Failed to execute SQL query. at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:1226) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1278) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1253) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.query(GridReduceQueryExecutor.java:813) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$8.iterator(IgniteH2Indexing.java:1493) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:94) ~[ignite-core-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$9.iterator(IgniteH2Indexing.java:1534) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:94) ~[ignite-core-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.getAll(QueryCursorImpl.java:113) ~[ignite-core-2.0.0.jar:2.0.0] at org.springframework.data.ignite.IgniteAdapter.execute(IgniteAdapter.java:135) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.ignite.repository.query.IgniteQueryEngine.execute(IgniteQueryEngine.java:74) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.keyvalue.core.AbstractKeyValueAdapter.find(AbstractKeyValueAdapter.java:84) ~[spring-data-keyvalue-1.2.3.RELEASE.jar:?] at org.springframework.data.ignite.IgniteTemplate$2.doInKeyValue(IgniteTemplate.java:307) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.ignite.IgniteTemplate$2.doInKeyValue(IgniteTemplate.java:302) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.ignite.IgniteTemplate.execute(IgniteTemplate.java:273) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] ... 181 more Caused by: org.h2.jdbc.JdbcSQLException: General error: "java.lang.ArrayIndexOutOfBoundsException: 1"; SQL statement: SELECT I__Z0___KEY _KEY, I__Z0___VAL _VAL FROM (SELECT __C0_0 POSITION, MAX(__C0_1) AS MODIFIEDTIME FROM PUBLIC.__T0 GROUP BY __C0_0 ORDER BY 1, 1, 2) I2__Z2 INNER JOIN (SELECT __C1_0 I__Z0__LASTMODIFIEDTIME, __C1_1 I__Z0___VAL, __C1_2 I__Z0___KEY, __C1_3 I__Z0__POSITION FROM PUBLIC.__T1 ORDER BY 4, 1) __Z3 ON TRUE WHERE TRUE AND (TRUE AND (TRUE AND ((I__Z0__POSITION = I2__Z2.POSITION) AND (I__Z0__LASTMODIFIEDTIME = I2__Z2.MODIFIEDTIME)))) GROUP BY I__Z0__POSITION ORDER BY =I__Z0__POSITION [50000-195] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.195.jar:1.4.195] at org.h2.message.DbException.get(DbException.java:168) ~[h2-1.4.195.jar:1.4.195] at org.h2.message.DbException.convert(DbException.java:295) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.Command.executeQuery(Command.java:215) ~[h2-1.4.195.jar:1.4.195] at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:111) ~[h2-1.4.195.jar:1.4.195] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:1219) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1278) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1253) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.query(GridReduceQueryExecutor.java:813) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$8.iterator(IgniteH2Indexing.java:1493) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:94) ~[ignite-core-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$9.iterator(IgniteH2Indexing.java:1534) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:94) ~[ignite-core-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.getAll(QueryCursorImpl.java:113) ~[ignite-core-2.0.0.jar:2.0.0] at org.springframework.data.ignite.IgniteAdapter.execute(IgniteAdapter.java:135) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.ignite.repository.query.IgniteQueryEngine.execute(IgniteQueryEngine.java:74) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.keyvalue.core.AbstractKeyValueAdapter.find(AbstractKeyValueAdapter.java:84) ~[spring-data-keyvalue-1.2.3.RELEASE.jar:?] at org.springframework.data.ignite.IgniteTemplate$2.doInKeyValue(IgniteTemplate.java:307) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.ignite.IgniteTemplate$2.doInKeyValue(IgniteTemplate.java:302) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] at org.springframework.data.ignite.IgniteTemplate.execute(IgniteTemplate.java:273) ~[spring-data-ignite-1.0.9-BETA-SNAPSHOT.jar:1.0.9-BETA-SNAPSHOT] ... 181 more Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.ignite.internal.processors.query.h2.twostep.GridMergeIndexSorted$MergeStreamIterator.goNext(GridMergeIndexSorted.java:255) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.twostep.GridMergeIndexSorted$MergeStreamIterator.hasNext(GridMergeIndexSorted.java:269) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.twostep.GridMergeIndex$FetchingCursor.fetchRows(GridMergeIndex.java:614) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.twostep.GridMergeIndex$FetchingCursor.next(GridMergeIndex.java:658) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.h2.index.IndexCursor.next(IndexCursor.java:305) ~[h2-1.4.195.jar:1.4.195] at org.h2.table.TableFilter.next(TableFilter.java:499) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Select$LazyResultQueryFlat.fetchNextRow(Select.java:1452) ~[h2-1.4.195.jar:1.4.195] at org.h2.result.LazyResult.hasNext(LazyResult.java:79) ~[h2-1.4.195.jar:1.4.195] at org.h2.result.LazyResult.next(LazyResult.java:59) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Select.queryFlat(Select.java:519) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Select.queryWithoutCache(Select.java:625) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:114) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Query.query(Query.java:352) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Query.query(Query.java:333) ~[h2-1.4.195.jar:1.4.195] at org.h2.index.ViewIndex.find(ViewIndex.java:291) ~[h2-1.4.195.jar:1.4.195] at org.h2.index.ViewIndex.find(ViewIndex.java:161) ~[h2-1.4.195.jar:1.4.195] at org.h2.index.BaseIndex.find(BaseIndex.java:128) ~[h2-1.4.195.jar:1.4.195] at org.h2.index.IndexCursor.find(IndexCursor.java:169) ~[h2-1.4.195.jar:1.4.195] at org.h2.table.TableFilter.next(TableFilter.java:468) ~[h2-1.4.195.jar:1.4.195] at org.h2.table.TableFilter.next(TableFilter.java:538) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Select.queryGroup(Select.java:311) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Select.queryWithoutCache(Select.java:620) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:114) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Query.query(Query.java:352) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.dml.Query.query(Query.java:333) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.CommandContainer.query(CommandContainer.java:113) ~[h2-1.4.195.jar:1.4.195] at org.h2.command.Command.executeQuery(Command.java:201) ~[h2-1.4.195.jar:1.4.195] at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:111) ~[h2-1.4.195.jar:1.4.195] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:1219) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1278) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1253) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.query(GridReduceQueryExecutor.java:813) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$8.iterator(IgniteH2Indexing.java:1493) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:94) ~[ignite-core-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$9.iterator(IgniteH2Indexing.java:1534) ~[ignite-indexing-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:94) ~[ignite-core-2.0.0.jar:2.0.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.getAll(QueryCursorImpl.java:113) ~[ignite-core-2.0.0.jar:2.0.0] ... 181 more It's very strange the query fails only when exactly one record is returned in result set -- View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Failed-to-run-reduce-query-locally-tp16403.html Sent from the Apache Ignite Users mailing list archive at Nabble.com.
-- Taras Ledkov Mail-To: tled...@gridgain.com