Hi all, We're looking to do a major upgrade from 2.8.0 to 2.13.0 After the initial upgrade our test suite started failing (about 15% of tests now fail). No other change has been made other than the Ignite version number.
org.apache.ignite.internal.processors.query.IgniteSQLException: General > error: "class org.apache.ignite.IgniteException: Failed to wrap > value[type=17, value=[Ljava.lang.Object;@667eb78]"; SQL statement: > SELECT HYPI_INSTANCEID, COUNT(HYPI_ID) FROM > hypi_01E8NPNFADNKECH7BR0K5FDE2C_Account WHERE HYPI_ID IN (?) AND > HYPI_INSTANCEID=? GROUP BY HYPI_INSTANCEID [50000-197] > at > org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:898) > at > org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:985) > at > org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest0(GridMapQueryExecutor.java:471) > at > org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest(GridMapQueryExecutor.java:284) > at > org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.onMessage(IgniteH2Indexing.java:2219) > at > org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor$1.applyx(GridReduceQueryExecutor.java:157) > at > org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor$1.applyx(GridReduceQueryExecutor.java:152) > at > org.apache.ignite.internal.util.lang.IgniteInClosure2X.apply(IgniteInClosure2X.java:38) > at > org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.send(IgniteH2Indexing.java:2344) > at > org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.send(GridReduceQueryExecutor.java:1201) > at > org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.query(GridReduceQueryExecutor.java:463) > at > org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$7.iterator(IgniteH2Indexing.java:1846) > at > org.apache.ignite.internal.processors.cache.QueryCursorImpl.iter(QueryCursorImpl.java:102) > at > org.apache.ignite.internal.processors.cache.query.RegisteredQueryCursor.iter(RegisteredQueryCursor.java:91) > at > org.apache.ignite.internal.processors.cache.QueryCursorImpl.getAll(QueryCursorImpl.java:124) > Investigating this I found that IndexKeyFactory has since been added in a release after 2.8.0. It is the source of the exception > throw new IgniteException("Failed to wrap value[type=" + keyType + ", > value=" + o + "]"); > The key type 17 is ARRAY, defined in `org.h2.value.Value` (ARRAY enum value line 137) Looking further I can see that IndexKeyFactory registers: > IndexKeyFactory.register(IndexKeyTypes.DATE, DateIndexKey::new); > IndexKeyFactory.register(IndexKeyTypes.TIME, TimeIndexKey::new); > IndexKeyFactory.register(IndexKeyTypes.TIMESTAMP, > TimestampIndexKey::new);-- And these are the only additional key types registered anywhere in the 2.13.0 code base. Looking further, I found that the problem is wherever we use the `IN` clause In 2.8.0 we had a query like this: > DELETE FROM permission_cause WHERE instanceId = ? AND policyId = ? AND > rowId IN (?) AND accountId = ? And we would pass in a Java array as the 3rd argument > instanceId, policyId, toDelete.toArray(), accountId This would work fine with the toDelete.toArray() Now, we have to change it and expand from IN(?) to IN(?,?,?) putting in as many ? as there are entries in the array and pass in the values individually. This seems like a regression, was this intentional? Best, Courtney