sandynz opened a new issue, #24210:
URL: https://github.com/apache/shardingsphere/issues/24210
## Feature Request
### Is your feature request related to a problem?
Yes
### Describe the feature you would like.
MySQL is used, table primary key is VARBINARY type. Primary key column is
sharding column, and keyGenerateStrategy is NOT configured.
When insert into table, there's exception thrown.
It's tested in migration job. The inserted varbinary value is byte array
(read from MySQL and write to ShardingSphere with MySQL).
```
o.a.s.e.e.h.g.LogJobErrorHandler - Job
'j0101b36ade21a62d0d8bdc8b55d2eb1ea55a' exception occur in job processing
java.lang.RuntimeException: java.util.concurrent.ExecutionException:
org.apache.shardingsphere.sharding.exception.data.NotImplementComparableValueException:
Sharding value: [B@6fd51628 value must implements Comparable.
at
org.apache.shardingsphere.data.pipeline.core.execute.ExecuteEngine.trigger(ExecuteEngine.java:117)
at
org.apache.shardingsphere.data.pipeline.core.task.InventoryIncrementalTasksRunner.executeInventoryTask(InventoryIncrementalTasksRunner.java:97)
at
org.apache.shardingsphere.data.pipeline.core.task.InventoryIncrementalTasksRunner.start(InventoryIncrementalTasksRunner.java:84)
at
org.apache.shardingsphere.data.pipeline.core.job.AbstractSimplePipelineJob.execute(AbstractSimplePipelineJob.java:60)
at
org.apache.shardingsphere.elasticjob.simple.executor.SimpleJobExecutor.process(SimpleJobExecutor.java:33)
at
org.apache.shardingsphere.elasticjob.simple.executor.SimpleJobExecutor.process(SimpleJobExecutor.java:29)
at
org.apache.shardingsphere.elasticjob.executor.ElasticJobExecutor.process(ElasticJobExecutor.java:173)
at
org.apache.shardingsphere.elasticjob.executor.ElasticJobExecutor.process(ElasticJobExecutor.java:142)
at
org.apache.shardingsphere.elasticjob.executor.ElasticJobExecutor.execute(ElasticJobExecutor.java:124)
at
org.apache.shardingsphere.elasticjob.executor.ElasticJobExecutor.execute(ElasticJobExecutor.java:100)
at
org.apache.shardingsphere.elasticjob.lite.internal.schedule.LiteJob.execute(LiteJob.java:35)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.util.concurrent.ExecutionException:
org.apache.shardingsphere.sharding.exception.data.NotImplementComparableValueException:
Sharding value: [B@6fd51628 value must implements Comparable.
at
java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
at
java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
at
org.apache.shardingsphere.data.pipeline.core.execute.ExecuteEngine.trigger(ExecuteEngine.java:111)
... 12 common frames omitted
Caused by:
org.apache.shardingsphere.sharding.exception.data.NotImplementComparableValueException:
Sharding value: [B@6fd51628 value must implements Comparable.
at
org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine.lambda$getShardingValue$0(InsertClauseShardingConditionEngine.java:145)
at
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions.checkState(ShardingSpherePreconditions.java:41)
at
org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine.getShardingValue(InsertClauseShardingConditionEngine.java:145)
at
org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine.createShardingCondition(InsertClauseShardingConditionEngine.java:115)
at
org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine.createShardingConditionsWithInsertValues(InsertClauseShardingConditionEngine.java:84)
at
org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine.createShardingConditions(InsertClauseShardingConditionEngine.java:71)
at
org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.DefaultShardingConditionEngine.createShardingConditions(DefaultShardingConditionEngine.java:47)
at
org.apache.shardingsphere.sharding.route.engine.ShardingSQLRouter.createShardingConditions(ShardingSQLRouter.java:69)
at
org.apache.shardingsphere.sharding.route.engine.ShardingSQLRouter.createRouteContext(ShardingSQLRouter.java:53)
at
org.apache.shardingsphere.sharding.route.engine.ShardingSQLRouter.createRouteContext(ShardingSQLRouter.java:46)
at
org.apache.shardingsphere.infra.route.engine.impl.PartialSQLRouteExecutor.route(PartialSQLRouteExecutor.java:69)
at
org.apache.shardingsphere.infra.route.engine.SQLRouteEngine.route(SQLRouteEngine.java:55)
at
org.apache.shardingsphere.infra.context.kernel.KernelProcessor.route(KernelProcessor.java:59)
at
org.apache.shardingsphere.infra.context.kernel.KernelProcessor.generateExecutionContext(KernelProcessor.java:51)
at
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.createExecutionContext(ShardingSpherePreparedStatement.java:697)
at
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.addBatch(ShardingSpherePreparedStatement.java:780)
at
org.apache.shardingsphere.data.pipeline.core.importer.DataSourceImporter.executeBatchInsert(DataSourceImporter.java:191)
at
org.apache.shardingsphere.data.pipeline.core.importer.DataSourceImporter.doFlush(DataSourceImporter.java:160)
at
org.apache.shardingsphere.data.pipeline.core.importer.DataSourceImporter.tryFlush(DataSourceImporter.java:142)
at
org.apache.shardingsphere.data.pipeline.core.importer.DataSourceImporter.flushInternal(DataSourceImporter.java:135)
at
org.apache.shardingsphere.data.pipeline.core.importer.DataSourceImporter.flush(DataSourceImporter.java:125)
at
org.apache.shardingsphere.data.pipeline.core.importer.DataSourceImporter.runBlocking(DataSourceImporter.java:101)
at
org.apache.shardingsphere.data.pipeline.api.executor.AbstractLifecycleExecutor.start(AbstractLifecycleExecutor.java:52)
at
org.apache.shardingsphere.data.pipeline.api.executor.AbstractLifecycleExecutor.run(AbstractLifecycleExecutor.java:90)
at
java.base/java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1736)
at
java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
```
Example table structure, yaml configuration and test code could refer to
#24135.
Just remove keyGenerateStrategy and change `shardingColumn: user_id` to
`shardingColumn: order_id`.
```
databaseName: logic_db
# ...
rules:
- !SHARDING
autoTables:
t_order:
actualDataSources: ds_2,ds_3,ds_4
logicTable: t_order
shardingStrategy:
standard:
shardingAlgorithmName: t_order_hash_mod
shardingColumn: order_id
shardingAlgorithms:
t_order_hash_mod:
props:
sharding-count: '6'
type: hash_mod
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail:
[email protected]
For queries about this service, please contact Infrastructure at:
[email protected]