Here it is... And yes I recently upgraded to 2.12 from 2.8.1 create table if not exists car_code ( provider_id int, car_id int, car_code varchar(16), primary key (provider_id, car_id) ) with "template=replicatedTpl, key_type=CarCodeKey, value_type=CarCode";
On Wed, Aug 31, 2022 at 7:25 AM Alex Plehanov <plehanov.a...@gmail.com> wrote: > John Smith, > > Can you please show DDL for the car_code table? Does PK of this table > include provider_id or car_code columns? > I found a compatibility issue, with the same behaviour, it happens when > storage created with Ignite version before 2.11 is used with the newer > Ignite version. Have you upgraded the dev environment with existing storage > recently (before starting to get this error)? > > > чт, 4 авг. 2022 г. в 17:06, John Smith <java.dev....@gmail.com>: > >> Let me know if that makes any sense, because the test data is the same >> and the application code is the same. Only dropped and created the table >> again using DbEaver. >> >> On Wed, Aug 3, 2022 at 11:39 AM John Smith <java.dev....@gmail.com> >> wrote: >> >>> Hi, so I dropped the table and simply recreated it. Did NOT restart the >>> application. >>> >>> Now it works fine. >>> >>> On Wed, Aug 3, 2022 at 9:58 AM John Smith <java.dev....@gmail.com> >>> wrote: >>> >>>> How? The code is 100% the same between production and dev. And it's >>>> part of a bigger application. >>>> >>>> Only dev has the issue. I will drop and recreate the table if that >>>> fixes the issue then what? >>>> >>>> You are saying mismatch, it's a string period. >>>> >>>> "select car_id from car_code where provider_id = ? and car_code = ? order >>>> by car_id asc limit 1;" >>>> >>>> >>>> The first parameter is Integer and the second one is String. there's no >>>> way this can mismatch... And even if the String was a UUID it's still a >>>> string. >>>> >>>> public 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); >>>> } >>>> >>>> promise.tryComplete(rows); >>>> } catch(Exception ex) { >>>> ex.printStackTrace(); >>>> } >>>> } >>>> >>>> Integer providerId = 1; >>>> String carCode = "FOO"; >>>> >>>> query("select car_id from car_code where provider_id = ? and >>>> car_code = ? order by car_id asc limit 1;", 3000, providerId, cardCode); >>>> >>>> >>>> >>>> On Wed, Aug 3, 2022 at 6:50 AM Taras Ledkov <tled...@apache.org> wrote: >>>> >>>>> Hi John and Don, >>>>> >>>>> I guess the root cause in the data types mismatch between table schema >>>>> and actual data at the store or type of the query parameter. >>>>> To explore the gap, it would be very handy if you could provide a >>>>> small reproducer (standalone project or PR somewhere). >>>>> >>>>> > 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] >>>>> >>>>> >>>>> -- >>>>> With best regards, >>>>> Taras Ledkov >>>>> >>>>