In my case I'm not even using UUID fields. Also the same code 2 diff
environment dev vs prod doesn't cause the issue. I'm lucky enough that it's
on dev and prod is ok.

But that last part might be misleading because in prod I think it happened
early on during upgrade and all I did was recreate the sql table.

So before I do the same on dev... I want to see what the issue is.

On Tue., Aug. 2, 2022, 6:06 p.m. , <don.tequ...@gmx.de> wrote:

> I‘m only speculating but this looks very similar to the issue I had last
> week and reported to the group here.
>
> Caused by: org.h2.message.DbException: Hexadecimal string with odd number
> of characters: "5" [90003-197]
>
> Why does H2 think it’s hex String format? For me it turned out H2 was
> wrongly thinking my column data is UUID format, even though it was
> configured as regular String class. Most data in a column was text like
> ‚abc‘ or similar text. But there were also some values that were actually
> UUIDs but still converted to String for this column.
>
> So when I then searched for using SqlFieldsQuery with arguments for a
> value that was a UUID as String I got a similar exception.
>
> I am still trying to create a smaller repro case, that’s why I haven’t
> described my solution in more detail in my other thread yet.
>
>
>
> On 02.08.22 at 23:04, John Smith wrote:
>
> From: "John Smith" <java.dev....@gmail.com>
> Date: 2. August 2022
> To: user@ignite.apache.org
> Cc:
> Subject: Re: What does javax.cache.CacheException: Failed to execute map
> query on remote node mean?
> Here it is...
>
> [20:58:03,050][SEVERE][query-#395344%xxxxxx%][GridMapQueryExecutor] Failed
> to execute local query.
> class org.apache.ignite.internal.processors.query.IgniteSQLException:
> General error: "class org.apache.ignite.IgniteCheckedException: Runtime
> failure on lookup row: IndexSearchRowImpl
> [rowHnd=org.apache.ignite.internal.processors.query.h2.index.QueryIndexRowHandler@16bc23dd]";
> SQL statement:
> SELECT
> __Z0.CAR_ID __C0_0
> FROM PUBLIC.CAR_CODE __Z0
> WHERE (__Z0.PROVIDER_ID = ?1) AND (__Z0.CAR_CODE = ?2)
> ORDER BY 1 LIMIT 1 [50000-197]
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:875)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:962)
> at
> org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest0(GridMapQueryExecutor.java:454)
> at
> org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest(GridMapQueryExecutor.java:274)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.onMessage(IgniteH2Indexing.java:2187)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.lambda$start$22(IgniteH2Indexing.java:2132)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager$ArrayListener.onMessage(GridIoManager.java:3480)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1907)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1528)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.access$5300(GridIoManager.java:242)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1421)
> at
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: org.h2.jdbc.JdbcSQLException: General error: "class
> org.apache.ignite.IgniteCheckedException: Runtime failure on lookup row:
> IndexSearchRowImpl
> [rowHnd=org.apache.ignite.internal.processors.query.h2.index.QueryIndexRowHandler@16bc23dd]";
> SQL statement:
> SELECT
> __Z0.CAR_ID __C0_0
> FROM PUBLIC.CAR_CODE __Z0
> WHERE (__Z0.PROVIDER_ID = ?1) AND (__Z0.CAR_CODE = ?2)
> ORDER BY 1 LIMIT 1 [50000-197]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
> at org.h2.message.DbException.get(DbException.java:168)
> at org.h2.message.DbException.convert(DbException.java:307)
> at
> org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.find(H2TreeIndex.java:214)
> at org.h2.index.BaseIndex.find(BaseIndex.java:130)
> at org.h2.index.IndexCursor.find(IndexCursor.java:176)
> at org.h2.table.TableFilter.next(TableFilter.java:471)
> at
> org.h2.command.dml.Select$LazyResultQueryFlat.fetchNextRow(Select.java:1452)
> at org.h2.result.LazyResult.hasNext(LazyResult.java:79)
> at org.h2.result.LazyResult.next(LazyResult.java:59)
> at org.h2.command.dml.Select.queryFlat(Select.java:527)
> at org.h2.command.dml.Select.queryWithoutCache(Select.java:633)
> at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:114)
> at org.h2.command.dml.Query.query(Query.java:352)
> at org.h2.command.dml.Query.query(Query.java:333)
> at org.h2.command.CommandContainer.query(CommandContainer.java:114)
> at org.h2.command.Command.executeQuery(Command.java:202)
> at
> org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:114)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:865)
> ... 14 more
> Caused by: class org.apache.ignite.IgniteCheckedException: Runtime failure
> on lookup row: IndexSearchRowImpl
> [rowHnd=org.apache.ignite.internal.processors.query.h2.index.QueryIndexRowHandler@16bc23dd
> ]
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findOne(BPlusTree.java:1387)
> at
> org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexImpl.find(InlineIndexImpl.java:101)
> at
> org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.find(H2TreeIndex.java:207)
> ... 29 more
> Caused by: class org.apache.ignite.IgniteCheckedException: Rows cannot be
> compared
> at
> org.apache.ignite.internal.processors.query.h2.index.H2RowComparator.compareValues(H2RowComparator.java:152)
> at
> org.apache.ignite.internal.processors.query.h2.index.H2RowComparator.compareRow(H2RowComparator.java:117)
> at
> org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.compareFullRows(InlineIndexTree.java:358)
> at
> org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.compare(InlineIndexTree.java:338)
> at
> org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.compare(InlineIndexTree.java:71)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.compare(BPlusTree.java:5430)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findInsertionPoint(BPlusTree.java:5350)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$1100(BPlusTree.java:100)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run0(BPlusTree.java:307)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5944)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run(BPlusTree.java:287)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5930)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.readPage(PageHandler.java:174)
> at
> org.apache.ignite.internal.processors.cache.persistence.DataStructure.read(DataStructure.java:415)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.read(BPlusTree.java:6131)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findDown(BPlusTree.java:1449)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doFind(BPlusTree.java:1416)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findOne(BPlusTree.java:1379)
> ... 31 more
> Caused by: org.h2.message.DbException: Hexadecimal string with odd number
> of characters: "5" [90003-197]
> at org.h2.message.DbException.get(DbException.java:179)
> at org.h2.message.DbException.get(DbException.java:155)
> at org.h2.util.StringUtils.convertHexToBytes(StringUtils.java:913)
> at org.h2.value.Value.convertTo(Value.java:1078)
> at org.h2.value.Value.convertTo(Value.java:617)
> at org.h2.value.Value.convertTo(Value.java:592)
> at org.h2.table.Table.compareTypeSafe(Table.java:1187)
> at
> org.apache.ignite.internal.processors.query.h2.index.H2RowComparator.compareValues(H2RowComparator.java:149)
> ... 48 more
> Caused by: org.h2.jdbc.JdbcSQLException: Hexadecimal string with odd
> number of characters: "5" [90003-197]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
> ... 56 more
>
> On Tue, Aug 2, 2022 at 10:33 AM Николай Ижиков <nizhi...@apache.org>
> wrote:
>
>> Hello, John.
>>
>> Provided stack trace not enough to answer your question.
>> Can you, please, provide log from the remote node?
>>
>> 2 авг. 2022 г., в 17:14, John Smith <java.dev....@gmail.com> написал(а):
>>
>> Anyone?
>>
>> On Fri, Jul 29, 2022 at 8:44 AM John Smith <java.dev....@gmail.com>
>> wrote:
>>
>>> Any thoughts on this?
>>>
>>> On Mon., Jul. 25, 2022, 11:29 a.m. John Smith, <java.dev....@gmail.com>
>>> wrote:
>>>
>>>> Hi I have the following code and I get the below exception. The cache
>>>> runs on 3 remote nodes and it is accessed by thick client (client = true)
>>>>
>>>> String sql = "select car_id from car_code where provider_id = ? and
>>>> car_code = ? order by car_id asc limit 1;"
>>>> Integer providerId = 1;
>>>> String cardCode = "HONDA";
>>>>
>>>> JssonArray array = query(sql, 3000, providerId, carCode);
>>>>
>>>> JsonArray query(final String sql, final long timeoutMs, final Object...
>>>> args) {
>>>>         SqlFieldsQuery query = new SqlFieldsQuery(sql).setArgs(args);
>>>>         query.setTimeout((int) timeoutMs, TimeUnit.MILLISECONDS);
>>>>
>>>>         try (QueryCursor<List<?>> cursor = cache.query(query)) {
>>>>             List<JsonArray> rows = new ArrayList<>();
>>>>             Iterator<List<?>> iterator = cursor.iterator();
>>>>
>>>>             while(iterator.hasNext()) {
>>>>                 List currentRow = iterator.next();
>>>>                 JsonArray row = new JsonArray();
>>>>
>>>>                 currentRow.forEach(o -> row.add(o));
>>>>
>>>>                 rows.add(row);
>>>>             }
>>>>
>>>>             return rows;
>>>>         } catch(Exception ex) {
>>>>         ex.printStackTrace();
>>>>         }
>>>>     }
>>>>
>>>> Running this in Datagrip with JDBC client works fine;
>>>>
>>>> select
>>>>     car_id
>>>> from car_code
>>>> where provider_id = 5 and car_code = 'HONDA'
>>>> order by car_id asc limit 1;
>>>>
>>>> Works
>>>>
>>>>
>>>> javax.cache.CacheException: Failed to execute map query on remote node
>>>> [nodeId=xxxxxx, errMsg=General error: \"class
>>>> org.apache.ignite.IgniteCheckedException: Runtime failure on lookup row:
>>>> IndexSearchRowImpl
>>>> [rowHnd=org.apache.ignite.internal.processors.query.h2.index.QueryIndexRowHandler@16bc23dd]\";
>>>> SQL statement:
>>>> \nSELECT
>>>> \n__Z0.CAR_ID __C0_0
>>>> \nFROM PUBLIC.CAR_CODE __Z0
>>>> \nWHERE (__Z0.PROVIDER_ID = ?1) AND (__Z0.CAR_CODE = ?2)
>>>> \nORDER BY 1 LIMIT 1 [50000-197]]
>>>> \n\tat
>>>> org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.fail(GridReduceQueryExecutor.java:235)
>>>> \n\tat
>>>> org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.onFail(GridReduceQueryExecutor.java:214)
>>>> \n\tat
>>>> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.onMessage(IgniteH2Indexing.java:2193)
>>>> \n\tat
>>>> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.lambda$start$22(IgniteH2Indexing.java:2132)
>>>> \n\tat
>>>> org.apache.ignite.internal.managers.communication.GridIoManager$ArrayListener.onMessage(GridIoManager.java:3480)
>>>> \n\tat
>>>> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1907)
>>>> \n\tat
>>>> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1528)
>>>> \n\tat
>>>> org.apache.ignite.internal.managers.communication.GridIoManager.access$5300(GridIoManager.java:242)
>>>> \n\tat
>>>> org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1421)
>>>> \n\tat
>>>> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
>>>> \n\tat
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>>> \n\tat
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>>> \n\tat java.lang.Thread.run(Thread.java:748)
>>>> \n
>>>>
>>>
>>

Reply via email to