This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 2daad22de4d Fix sonar issues on Fix sonar issue on Remove usage of
generic wildcard type (#26025)
2daad22de4d is described below
commit 2daad22de4de43e78db62f7971231df9274dbf0c
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jun 3 12:36:54 2023 +0800
Fix sonar issues on Fix sonar issue on Remove usage of generic wildcard
type (#26025)
* Fix sonar issue on MetaDataReviseEntry
* Fix sonar issue on ResultDecoratorEngine
* Fix sonar issue on PipelineJobAPI
* Fix sonar issue on HBaseCheckerFactory
* Fix test cases
* Fix test cases
---
.../merge/EncryptResultDecoratorEngine.java | 13 ++++++-----
.../merge/EncryptResultDecoratorEngineTest.java | 17 ++++++++------
.../mask/merge/MaskResultDecoratorEngine.java | 15 ++++++-------
.../mask/merge/MaskResultDecoratorEngineTest.java | 12 +++++-----
.../reviser/ShardingMetaDataReviseEntry.java | 3 +--
.../schema/reviser/MetaDataReviseEntry.java | 2 +-
.../shardingsphere/infra/merge/MergeEngine.java | 10 +++++++--
.../engine/decorator/ResultDecoratorEngine.java | 4 +++-
.../decorator/ResultDecoratorEngineFixture.java | 8 ++++---
.../data/pipeline/core/api/PipelineJobAPI.java | 2 +-
.../AbstractInventoryIncrementalJobAPIImpl.java | 2 +-
.../core/api/impl/AbstractPipelineJobAPIImpl.java | 2 +-
.../CommonHeterogeneousSQLStatementChecker.java | 26 +++++++++-------------
.../backend/hbase/checker/HBaseCheckerFactory.java | 4 ++--
.../HeterogeneousDeleteStatementChecker.java | 10 ++++++---
.../HeterogeneousInsertStatementChecker.java | 16 +++++++------
.../checker/HeterogeneousSQLStatementChecker.java | 6 ++---
.../HeterogeneousSelectStatementChecker.java | 24 +++++++++++---------
.../HeterogeneousUpdateStatementChecker.java | 11 +++++----
...CommonHeterogeneousSQLStatementCheckerTest.java | 21 +++++++++--------
.../hbase/checker/HBaseCheckerFactoryTest.java | 10 ++++-----
21 files changed, 119 insertions(+), 99 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
index 12cdc640ff4..5fd4c0184af 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
@@ -27,25 +27,26 @@ import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementConte
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
import
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEngine;
-import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
+import java.util.Optional;
+
/**
* Result decorator engine for encrypt.
*/
public final class EncryptResultDecoratorEngine implements
ResultDecoratorEngine<EncryptRule> {
@Override
- public ResultDecorator<?> newInstance(final ShardingSphereDatabase
database, final EncryptRule encryptRule, final ConfigurationProperties props,
final SQLStatementContext sqlStatementContext) {
+ public Optional<ResultDecorator<EncryptRule>> newInstance(final
ShardingSphereDatabase database,
+ final
EncryptRule encryptRule, final ConfigurationProperties props, final
SQLStatementContext sqlStatementContext) {
if (sqlStatementContext instanceof SelectStatementContext) {
- EncryptAlgorithmMetaData algorithmMetaData = new
EncryptAlgorithmMetaData(database, encryptRule, (SelectStatementContext)
sqlStatementContext);
- return new EncryptDQLResultDecorator(algorithmMetaData);
+ return Optional.of(new EncryptDQLResultDecorator(new
EncryptAlgorithmMetaData(database, encryptRule, (SelectStatementContext)
sqlStatementContext)));
}
if (sqlStatementContext.getSqlStatement() instanceof DALStatement) {
- return new EncryptDALResultDecorator();
+ return Optional.of(new EncryptDALResultDecorator());
}
- return new TransparentResultDecorator();
+ return Optional.empty();
}
@Override
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
index 446a196bcb3..bffd04b73da 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
@@ -27,7 +27,6 @@ import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementConte
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
-import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.spi.type.ordered.OrderedSPILoader;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLExplainStatement;
@@ -37,9 +36,12 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -56,8 +58,9 @@ class EncryptResultDecoratorEngineTest {
@Test
void assertNewInstanceWithSelectStatement() {
EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine)
OrderedSPILoader.getServices(ResultProcessEngine.class,
Collections.singleton(rule)).get(rule);
- ResultDecorator<?> actual = engine.newInstance(database, rule,
mock(ConfigurationProperties.class), mock(SelectStatementContext.class,
RETURNS_DEEP_STUBS));
- assertThat(actual, instanceOf(EncryptDQLResultDecorator.class));
+ Optional<ResultDecorator<EncryptRule>> actual =
engine.newInstance(database, rule, mock(ConfigurationProperties.class),
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS));
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), instanceOf(EncryptDQLResultDecorator.class));
}
@Test
@@ -65,14 +68,14 @@ class EncryptResultDecoratorEngineTest {
SQLStatementContext sqlStatementContext =
mock(ExplainStatementContext.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(MySQLExplainStatement.class));
EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine)
OrderedSPILoader.getServices(ResultProcessEngine.class,
Collections.singleton(rule)).get(rule);
- ResultDecorator<?> actual = engine.newInstance(database, rule,
mock(ConfigurationProperties.class), sqlStatementContext);
- assertThat(actual, instanceOf(EncryptDALResultDecorator.class));
+ Optional<ResultDecorator<EncryptRule>> actual =
engine.newInstance(database, rule, mock(ConfigurationProperties.class),
sqlStatementContext);
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), instanceOf(EncryptDALResultDecorator.class));
}
@Test
void assertNewInstanceWithOtherStatement() {
EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine)
OrderedSPILoader.getServices(ResultProcessEngine.class,
Collections.singleton(rule)).get(rule);
- ResultDecorator<?> actual = engine.newInstance(database, rule,
mock(ConfigurationProperties.class), mock(InsertStatementContext.class));
- assertThat(actual, instanceOf(TransparentResultDecorator.class));
+ assertFalse(engine.newInstance(database, rule,
mock(ConfigurationProperties.class),
mock(InsertStatementContext.class)).isPresent());
}
}
diff --git
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngine.java
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngine.java
index a70e0c575f5..3b0dc33b3c4 100644
---
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngine.java
+++
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngine.java
@@ -22,26 +22,25 @@ import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementConte
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
import
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEngine;
-import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.mask.constant.MaskOrder;
import org.apache.shardingsphere.mask.merge.dql.MaskAlgorithmMetaData;
import org.apache.shardingsphere.mask.merge.dql.MaskDQLResultDecorator;
import org.apache.shardingsphere.mask.rule.MaskRule;
+import java.util.Optional;
+
/**
* Result decorator engine for mask.
*/
public final class MaskResultDecoratorEngine implements
ResultDecoratorEngine<MaskRule> {
@Override
- public ResultDecorator<?> newInstance(final ShardingSphereDatabase
database, final MaskRule maskRule,
- final ConfigurationProperties props,
final SQLStatementContext sqlStatementContext) {
- if (sqlStatementContext instanceof SelectStatementContext) {
- MaskAlgorithmMetaData algorithmMetaData = new
MaskAlgorithmMetaData(database, maskRule, (SelectStatementContext)
sqlStatementContext);
- return new MaskDQLResultDecorator(algorithmMetaData);
- }
- return new TransparentResultDecorator();
+ public Optional<ResultDecorator<MaskRule>> newInstance(final
ShardingSphereDatabase database,
+ final MaskRule
maskRule, final ConfigurationProperties props, final SQLStatementContext
sqlStatementContext) {
+ return sqlStatementContext instanceof SelectStatementContext
+ ? Optional.of(new MaskDQLResultDecorator(new
MaskAlgorithmMetaData(database, maskRule, (SelectStatementContext)
sqlStatementContext)))
+ : Optional.empty();
}
@Override
diff --git
a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngineTest.java
b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngineTest.java
index 64c20e29dc8..832c6f6d7b5 100644
---
a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngineTest.java
+++
b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/MaskResultDecoratorEngineTest.java
@@ -22,7 +22,6 @@ import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementConte
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
-import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.mask.merge.dql.MaskDQLResultDecorator;
@@ -33,9 +32,12 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -51,14 +53,14 @@ class MaskResultDecoratorEngineTest {
@Test
void assertNewInstanceWithSelectStatement() {
MaskResultDecoratorEngine engine = (MaskResultDecoratorEngine)
OrderedSPILoader.getServices(ResultProcessEngine.class,
Collections.singleton(rule)).get(rule);
- ResultDecorator<?> actual = engine.newInstance(database, rule,
mock(ConfigurationProperties.class), mock(SelectStatementContext.class,
RETURNS_DEEP_STUBS));
- assertThat(actual, instanceOf(MaskDQLResultDecorator.class));
+ Optional<ResultDecorator<MaskRule>> actual =
engine.newInstance(database, rule, mock(ConfigurationProperties.class),
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS));
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), instanceOf(MaskDQLResultDecorator.class));
}
@Test
void assertNewInstanceWithOtherStatement() {
MaskResultDecoratorEngine engine = (MaskResultDecoratorEngine)
OrderedSPILoader.getServices(ResultProcessEngine.class,
Collections.singleton(rule)).get(rule);
- ResultDecorator<?> actual = engine.newInstance(database, rule,
mock(ConfigurationProperties.class), mock(InsertStatementContext.class));
- assertThat(actual, instanceOf(TransparentResultDecorator.class));
+ assertFalse(engine.newInstance(database, rule,
mock(ConfigurationProperties.class),
mock(InsertStatementContext.class)).isPresent());
}
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingMetaDataReviseEntry.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingMetaDataReviseEntry.java
index 9db62691a3a..8f2524daedc 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingMetaDataReviseEntry.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingMetaDataReviseEntry.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.metadata.reviser;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry;
-import
org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaTableAggregationReviser;
import org.apache.shardingsphere.sharding.constant.ShardingOrder;
import
org.apache.shardingsphere.sharding.metadata.reviser.column.ShardingColumnGeneratedReviser;
import
org.apache.shardingsphere.sharding.metadata.reviser.constraint.ShardingConstraintReviser;
@@ -37,7 +36,7 @@ import java.util.Optional;
public final class ShardingMetaDataReviseEntry implements
MetaDataReviseEntry<ShardingRule> {
@Override
- public Optional<SchemaTableAggregationReviser<ShardingRule>>
getSchemaTableAggregationReviser(final ConfigurationProperties props) {
+ public Optional<ShardingSchemaTableAggregationReviser>
getSchemaTableAggregationReviser(final ConfigurationProperties props) {
return Optional.of(new
ShardingSchemaTableAggregationReviser(props.getValue(ConfigurationPropertyKey.CHECK_TABLE_METADATA_ENABLED)));
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEntry.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEntry.java
index 30773c40aa0..1c2cdfa57a6 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEntry.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEntry.java
@@ -46,7 +46,7 @@ public interface MetaDataReviseEntry<T extends
ShardingSphereRule> extends Order
* @param props configuration properties
* @return schema table aggregation reviser
*/
- default Optional<SchemaTableAggregationReviser<T>>
getSchemaTableAggregationReviser(final ConfigurationProperties props) {
+ default Optional<? extends SchemaTableAggregationReviser<T>>
getSchemaTableAggregationReviser(final ConfigurationProperties props) {
return Optional.empty();
}
diff --git
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
index f61c700ee82..76ecf3c7811 100644
---
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
+++
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.merge;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
@@ -89,7 +90,7 @@ public final class MergeEngine {
MergedResult result = null;
for (Entry<ShardingSphereRule, ResultProcessEngine> entry :
engines.entrySet()) {
if (entry.getValue() instanceof ResultDecoratorEngine) {
- ResultDecorator resultDecorator = ((ResultDecoratorEngine)
entry.getValue()).newInstance(database, entry.getKey(), props,
sqlStatementContext);
+ ResultDecorator resultDecorator =
getResultDecorator(sqlStatementContext, entry);
result = null == result ?
resultDecorator.decorate(mergedResult, sqlStatementContext, entry.getKey()) :
resultDecorator.decorate(result, sqlStatementContext, entry.getKey());
}
}
@@ -101,10 +102,15 @@ public final class MergeEngine {
MergedResult result = null;
for (Entry<ShardingSphereRule, ResultProcessEngine> entry :
engines.entrySet()) {
if (entry.getValue() instanceof ResultDecoratorEngine) {
- ResultDecorator resultDecorator = ((ResultDecoratorEngine)
entry.getValue()).newInstance(database, entry.getKey(), props,
sqlStatementContext);
+ ResultDecorator resultDecorator =
getResultDecorator(sqlStatementContext, entry);
result = null == result ?
resultDecorator.decorate(queryResult, sqlStatementContext, entry.getKey()) :
resultDecorator.decorate(result, sqlStatementContext, entry.getKey());
}
}
return Optional.ofNullable(result);
}
+
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ private ResultDecorator getResultDecorator(final SQLStatementContext
sqlStatementContext, final Entry<ShardingSphereRule, ResultProcessEngine>
entry) {
+ return (ResultDecorator) ((ResultDecoratorEngine)
entry.getValue()).newInstance(database, entry.getKey(), props,
sqlStatementContext).orElseGet(TransparentResultDecorator::new);
+ }
}
diff --git
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
index b3607595494..fa47462509c 100644
---
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
+++
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
@@ -23,6 +23,8 @@ import
org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import java.util.Optional;
+
/**
* Result decorator engine.
*
@@ -39,5 +41,5 @@ public interface ResultDecoratorEngine<T extends
ShardingSphereRule> extends Res
* @param sqlStatementContext SQL statement context
* @return created instance
*/
- ResultDecorator<?> newInstance(ShardingSphereDatabase database, T rule,
ConfigurationProperties props, SQLStatementContext sqlStatementContext);
+ Optional<ResultDecorator<T>> newInstance(ShardingSphereDatabase database,
T rule, ConfigurationProperties props, SQLStatementContext sqlStatementContext);
}
diff --git
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
index 52cc677dc2d..463a5d015c0 100644
---
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
+++
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
@@ -24,12 +24,14 @@ import
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEng
import org.apache.shardingsphere.infra.merge.fixture.rule.DecoratorRuleFixture;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import java.util.Optional;
+
public final class ResultDecoratorEngineFixture implements
ResultDecoratorEngine<DecoratorRuleFixture> {
@Override
- public ResultDecorator<?> newInstance(final ShardingSphereDatabase
database,
- final DecoratorRuleFixture rule,
final ConfigurationProperties props, final SQLStatementContext
sqlStatementContext) {
- return new ResultDecoratorFixture();
+ public Optional<ResultDecorator<DecoratorRuleFixture>> newInstance(final
ShardingSphereDatabase database,
+ final
DecoratorRuleFixture rule, final ConfigurationProperties props, final
SQLStatementContext sqlStatementContext) {
+ return Optional.of(new ResultDecoratorFixture());
}
@Override
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/PipelineJobAPI.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/PipelineJobAPI.java
index dea027322cc..e7841a64d8b 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/PipelineJobAPI.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/PipelineJobAPI.java
@@ -118,7 +118,7 @@ public interface PipelineJobAPI extends TypedSPI {
* @param contextKey context key
* @return job info list
*/
- List<? extends PipelineJobInfo> list(PipelineContextKey contextKey);
+ List<PipelineJobInfo> list(PipelineContextKey contextKey);
/**
* Persist job item progress.
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractInventoryIncrementalJobAPIImpl.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractInventoryIncrementalJobAPIImpl.java
index 73ff026a3ae..3b3cbd2fd2a 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractInventoryIncrementalJobAPIImpl.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractInventoryIncrementalJobAPIImpl.java
@@ -189,7 +189,7 @@ public abstract class
AbstractInventoryIncrementalJobAPIImpl extends AbstractPip
@Override
public Optional<InventoryIncrementalJobItemProgress>
getJobItemProgress(final String jobId, final int shardingItem) {
Optional<String> progress =
PipelineAPIFactory.getGovernanceRepositoryAPI(PipelineJobIdUtils.parseContextKey(jobId)).getJobItemProgress(jobId,
shardingItem);
- return progress.map(s ->
jobItemProgressSwapper.swapToObject(YamlEngine.unmarshal(s,
YamlInventoryIncrementalJobItemProgress.class)));
+ return progress.map(optional ->
jobItemProgressSwapper.swapToObject(YamlEngine.unmarshal(optional,
YamlInventoryIncrementalJobItemProgress.class)));
}
@Override
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractPipelineJobAPIImpl.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractPipelineJobAPIImpl.java
index 47ca9669e75..c08303a9c89 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractPipelineJobAPIImpl.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/api/impl/AbstractPipelineJobAPIImpl.java
@@ -65,7 +65,7 @@ public abstract class AbstractPipelineJobAPIImpl implements
PipelineJobAPI {
protected abstract String marshalJobIdLeftPart(PipelineJobId
pipelineJobId);
@Override
- public List<? extends PipelineJobInfo> list(final PipelineContextKey
contextKey) {
+ public List<PipelineJobInfo> list(final PipelineContextKey contextKey) {
return getJobBriefInfos(contextKey).map(each ->
getJobInfo(each.getJobName())).collect(Collectors.toList());
}
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementChecker.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementChecker.java
index 96d81470c2d..15f6f17572f 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementChecker.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementChecker.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.proxy.backend.hbase.checker;
import com.google.common.base.Preconditions;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
@@ -33,24 +34,15 @@ import java.util.Arrays;
import java.util.List;
/**
- * Abstract checker.
- *
- * @param <T> SQLStatement.
+ * Common heterogeneous SQL statement checker.
*/
+@RequiredArgsConstructor
@Getter
-public class CommonHeterogeneousSQLStatementChecker<T extends SQLStatement>
implements HeterogeneousSQLStatementChecker<T> {
+public class CommonHeterogeneousSQLStatementChecker implements
HeterogeneousSQLStatementChecker {
protected static final List<String> ALLOW_KEYS = Arrays.asList("rowKey",
"row_key", "key", "pk", "id");
- private final T sqlStatement;
-
- public CommonHeterogeneousSQLStatementChecker(final T sqlStatement) {
- this.sqlStatement = sqlStatement;
- }
-
- @Override
- public void execute() {
- }
+ private final SQLStatement sqlStatement;
protected final void checkIsSinglePointQuery(final WhereSegment
whereSegment) {
ExpressionSegment whereExpr = whereSegment.getExpr();
@@ -77,9 +69,9 @@ public class CommonHeterogeneousSQLStatementChecker<T extends
SQLStatement> impl
/**
* Check in expression.
*
- * @param whereExpr InExpression
+ * @param whereExpr In expression
*/
- protected void checkInExpressionIsExpected(final ExpressionSegment
whereExpr) {
+ protected final void checkInExpressionIsExpected(final ExpressionSegment
whereExpr) {
InExpression expression = (InExpression) whereExpr;
Preconditions.checkArgument(expression.getLeft() instanceof
ColumnSegment, "Left segment must column segment.");
String rowKey = ((ColumnSegment)
expression.getLeft()).getIdentifier().getValue();
@@ -88,4 +80,8 @@ public class CommonHeterogeneousSQLStatementChecker<T extends
SQLStatement> impl
Preconditions.checkArgument(!expression.isNot(), "Do not supported
`not in`.");
Preconditions.checkArgument(expression.getRight() instanceof
ListExpression, "Only supported list expression.");
}
+
+ @Override
+ public void execute() {
+ }
}
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactory.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactory.java
index 4f4b84d5dec..8d4bc6ca9f6 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactory.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactory.java
@@ -37,7 +37,7 @@ public final class HBaseCheckerFactory {
* @param sqlStatement SQL statement
* @return created instance
*/
- public static HeterogeneousSQLStatementChecker<?> newInstance(final
SQLStatement sqlStatement) {
+ public static HeterogeneousSQLStatementChecker newInstance(final
SQLStatement sqlStatement) {
if (sqlStatement instanceof SelectStatement) {
return new HeterogeneousSelectStatementChecker((SelectStatement)
sqlStatement);
}
@@ -50,6 +50,6 @@ public final class HBaseCheckerFactory {
if (sqlStatement instanceof UpdateStatement) {
return new HeterogeneousUpdateStatementChecker((UpdateStatement)
sqlStatement);
}
- return new CommonHeterogeneousSQLStatementChecker<>(sqlStatement);
+ return new CommonHeterogeneousSQLStatementChecker(sqlStatement);
}
}
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousDeleteStatementChecker.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousDeleteStatementChecker.java
index 7900c85030e..a1fe1d1c788 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousDeleteStatementChecker.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousDeleteStatementChecker.java
@@ -21,20 +21,24 @@ import com.google.common.base.Preconditions;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.InExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DeleteStatement;
+
import java.util.Optional;
/**
- * Checker for delete statement.
+ * Delete statement checker.
*/
-public class HeterogeneousDeleteStatementChecker extends
CommonHeterogeneousSQLStatementChecker<DeleteStatement> {
+public final class HeterogeneousDeleteStatementChecker extends
CommonHeterogeneousSQLStatementChecker {
+
+ private final DeleteStatement sqlStatement;
public HeterogeneousDeleteStatementChecker(final DeleteStatement
sqlStatement) {
super(sqlStatement);
+ this.sqlStatement = sqlStatement;
}
@Override
public void execute() {
- Optional<WhereSegment> whereSegment = getSqlStatement().getWhere();
+ Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
Preconditions.checkArgument(whereSegment.isPresent(), "Must contain
where segment.");
if (whereSegment.get().getExpr() instanceof InExpression) {
checkInExpressionIsExpected(whereSegment.get().getExpr());
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousInsertStatementChecker.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousInsertStatementChecker.java
index 998e82b4890..8794abfc205 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousInsertStatementChecker.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousInsertStatementChecker.java
@@ -26,12 +26,15 @@ import java.util.List;
import java.util.stream.Collectors;
/**
- * Checker for insert statement.
+ * Insert statement checker.
*/
-public class HeterogeneousInsertStatementChecker extends
CommonHeterogeneousSQLStatementChecker<InsertStatement> {
+public final class HeterogeneousInsertStatementChecker extends
CommonHeterogeneousSQLStatementChecker {
+
+ private final InsertStatement sqlStatement;
public HeterogeneousInsertStatementChecker(final InsertStatement
sqlStatement) {
super(sqlStatement);
+ this.sqlStatement = sqlStatement;
}
@Override
@@ -43,7 +46,7 @@ public class HeterogeneousInsertStatementChecker extends
CommonHeterogeneousSQLS
}
private void checkIsExistsRowKeyInInsertColumns() {
- List<String> columns =
getSqlStatement().getColumns().stream().map(each ->
each.getIdentifier().getValue()).collect(Collectors.toList());
+ List<String> columns = sqlStatement.getColumns().stream().map(each ->
each.getIdentifier().getValue()).collect(Collectors.toList());
Preconditions.checkArgument(!columns.isEmpty(), "The inserted column
must be explicitly specified.");
Preconditions.checkArgument(ALLOW_KEYS.stream().anyMatch(each ->
each.equalsIgnoreCase(columns.get(0))), "First column must be rowKey.");
boolean isExists = columns.subList(1,
columns.size()).stream().anyMatch(ALLOW_KEYS::contains);
@@ -51,11 +54,11 @@ public class HeterogeneousInsertStatementChecker extends
CommonHeterogeneousSQLS
}
private void checkIsExistsSubQuery() {
-
Preconditions.checkArgument(!getSqlStatement().getInsertSelect().isPresent(),
"Do not supported `insert into...select...`");
+
Preconditions.checkArgument(!sqlStatement.getInsertSelect().isPresent(), "Do
not supported `insert into...select...`");
}
private void checkValueIsExpected() {
- Collection<InsertValuesSegment> values = getSqlStatement().getValues();
+ Collection<InsertValuesSegment> values = sqlStatement.getValues();
for (InsertValuesSegment insertValuesSegment : values) {
boolean isAllMatch =
insertValuesSegment.getValues().stream().allMatch(this::isAllowExpressionSegment);
Preconditions.checkArgument(isAllMatch, "Value must is literal or
parameter marker.");
@@ -63,7 +66,6 @@ public class HeterogeneousInsertStatementChecker extends
CommonHeterogeneousSQLS
}
private void checkOnDuplicateKey() {
- MySQLInsertStatement sqlStatement = (MySQLInsertStatement)
getSqlStatement();
-
Preconditions.checkArgument(!sqlStatement.getOnDuplicateKeyColumns().isPresent(),
"Do not supported ON DUPLICATE KEY UPDATE");
+ Preconditions.checkArgument(!((MySQLInsertStatement)
sqlStatement).getOnDuplicateKeyColumns().isPresent(), "Do not supported ON
DUPLICATE KEY UPDATE");
}
}
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSQLStatementChecker.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSQLStatementChecker.java
index 6e04ba0070d..45361d158f2 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSQLStatementChecker.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSQLStatementChecker.java
@@ -21,17 +21,15 @@ import
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
/**
* Check where clause.
- *
- * @param <T> SQL statement
*/
-public interface HeterogeneousSQLStatementChecker<T extends SQLStatement> {
+public interface HeterogeneousSQLStatementChecker {
/**
* Get SQL statement.
*
* @return SQL statement
*/
- T getSqlStatement();
+ SQLStatement getSqlStatement();
/**
* do check.
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSelectStatementChecker.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSelectStatementChecker.java
index 1a0980751fd..57ccb500084 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSelectStatementChecker.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousSelectStatementChecker.java
@@ -38,15 +38,19 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.Whe
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLSelectStatement;
+
import java.util.Optional;
/**
- * Checker for select statement.
+ * Select statement checker.
*/
-public final class HeterogeneousSelectStatementChecker extends
CommonHeterogeneousSQLStatementChecker<SelectStatement> {
+public final class HeterogeneousSelectStatementChecker extends
CommonHeterogeneousSQLStatementChecker {
+
+ private final SelectStatement sqlStatement;
public HeterogeneousSelectStatementChecker(final SelectStatement
sqlStatement) {
super(sqlStatement);
+ this.sqlStatement = sqlStatement;
}
@Override
@@ -58,10 +62,10 @@ public final class HeterogeneousSelectStatementChecker
extends CommonHeterogeneo
}
private void checkDoNotSupportedSegment() {
- Preconditions.checkArgument(getSqlStatement().getFrom() instanceof
SimpleTableSegment, "Only supported simple table segment.");
-
Preconditions.checkArgument(!getSqlStatement().getHaving().isPresent(), "Do not
supported having segment.");
-
Preconditions.checkArgument(!getSqlStatement().getGroupBy().isPresent(), "Do
not supported group by segment.");
- MySQLSelectStatement selectStatement = (MySQLSelectStatement)
getSqlStatement();
+ Preconditions.checkArgument(sqlStatement.getFrom() instanceof
SimpleTableSegment, "Only supported simple table segment.");
+ Preconditions.checkArgument(!sqlStatement.getHaving().isPresent(), "Do
not supported having segment.");
+ Preconditions.checkArgument(!sqlStatement.getGroupBy().isPresent(),
"Do not supported group by segment.");
+ MySQLSelectStatement selectStatement = (MySQLSelectStatement)
sqlStatement;
Preconditions.checkArgument(!selectStatement.getWindow().isPresent(),
"Do not supported window segment.");
Preconditions.checkArgument(!selectStatement.getLock().isPresent(),
"Do not supported lock segment.");
Optional<LimitSegment> limitSegment = selectStatement.getLimit();
@@ -74,7 +78,7 @@ public final class HeterogeneousSelectStatementChecker
extends CommonHeterogeneo
}
private void checkProjectionsIsExpected() {
- for (ProjectionSegment projectionSegment :
getSqlStatement().getProjections().getProjections()) {
+ for (ProjectionSegment projectionSegment :
sqlStatement.getProjections().getProjections()) {
if (!(projectionSegment instanceof ShorthandProjectionSegment ||
projectionSegment instanceof ColumnProjectionSegment ||
HBaseHeterogeneousUtils.isCrcProjectionSegment(
projectionSegment))) {
throw new IllegalArgumentException("Only supported shorthand,
column and crc32 expression projections.");
@@ -83,7 +87,7 @@ public final class HeterogeneousSelectStatementChecker
extends CommonHeterogeneo
}
private void checkSupportedWhereSegment() {
- Optional<WhereSegment> whereSegment = getSqlStatement().getWhere();
+ Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
if (!whereSegment.isPresent()) {
return;
}
@@ -111,10 +115,10 @@ public final class HeterogeneousSelectStatementChecker
extends CommonHeterogeneo
}
private void checkSupportedOrderBySegment() {
- if (!getSqlStatement().getOrderBy().isPresent()) {
+ if (!sqlStatement.getOrderBy().isPresent()) {
return;
}
- for (OrderByItemSegment orderByItemSegment :
getSqlStatement().getOrderBy().get().getOrderByItems()) {
+ for (OrderByItemSegment orderByItemSegment :
sqlStatement.getOrderBy().get().getOrderByItems()) {
if (!(orderByItemSegment instanceof ColumnOrderByItemSegment)) {
throw new IllegalArgumentException("Only simple row key order
by.");
}
diff --git
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousUpdateStatementChecker.java
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousUpdateStatementChecker.java
index 746c47df0a5..9296379552f 100644
---
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousUpdateStatementChecker.java
+++
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HeterogeneousUpdateStatementChecker.java
@@ -26,17 +26,20 @@ import java.util.Collection;
import java.util.Optional;
/**
- * Checker for update statement.
+ * Update statement checker.
*/
-public class HeterogeneousUpdateStatementChecker extends
CommonHeterogeneousSQLStatementChecker<UpdateStatement> {
+public final class HeterogeneousUpdateStatementChecker extends
CommonHeterogeneousSQLStatementChecker {
+
+ private final UpdateStatement sqlStatement;
public HeterogeneousUpdateStatementChecker(final UpdateStatement
sqlStatement) {
super(sqlStatement);
+ this.sqlStatement = sqlStatement;
}
@Override
public void execute() {
- Optional<WhereSegment> whereSegment = getSqlStatement().getWhere();
+ Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
Preconditions.checkArgument(whereSegment.isPresent(), "Must contain
where segment.");
if (whereSegment.get().getExpr() instanceof InExpression) {
checkInExpressionIsExpected(whereSegment.get().getExpr());
@@ -47,7 +50,7 @@ public class HeterogeneousUpdateStatementChecker extends
CommonHeterogeneousSQLS
}
private void checkAssignmentIsOk() {
- Collection<AssignmentSegment> assignmentSegments =
getSqlStatement().getSetAssignment().getAssignments();
+ Collection<AssignmentSegment> assignmentSegments =
sqlStatement.getSetAssignment().getAssignments();
for (AssignmentSegment assignmentSegment : assignmentSegments) {
Preconditions.checkArgument(isAllowExpressionSegment(assignmentSegment.getValue()),
"Assignment must is literal or parameter marker.");
boolean isRowKey = ALLOW_KEYS.stream().anyMatch(each ->
each.equalsIgnoreCase(assignmentSegment.getColumns().iterator().next().getIdentifier().getValue()));
diff --git
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementCheckerTest.java
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementCheckerTest.java
index 1775a147daa..a96c1a8871f 100644
---
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementCheckerTest.java
+++
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/CommonHeterogeneousSQLStatementCheckerTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.proxy.backend.hbase.checker;
import
org.apache.shardingsphere.proxy.backend.hbase.result.HBaseSupportedSQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import org.junit.jupiter.api.Test;
@@ -38,14 +37,14 @@ class CommonHeterogeneousSQLStatementCheckerTest {
void assertIsSinglePoint() {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where rowKey = '1'");
assertTrue(sqlStatement.getWhere().isPresent());
- new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).checkIsSinglePointQuery(sqlStatement.getWhere().get());
+ new
CommonHeterogeneousSQLStatementChecker(sqlStatement).checkIsSinglePointQuery(sqlStatement.getWhere().get());
}
@Test
void assertIsSinglePointWithErrorKey() {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where a = '1'");
assertTrue(sqlStatement.getWhere().isPresent());
- Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).checkIsSinglePointQuery(sqlStatement.getWhere().get()));
+ Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker(sqlStatement).checkIsSinglePointQuery(sqlStatement.getWhere().get()));
assertThat(ex.getMessage(), is("a is not a allowed key."));
}
@@ -53,7 +52,7 @@ class CommonHeterogeneousSQLStatementCheckerTest {
void assertIsSinglePointWithErrorOperation() {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where rowKey between '1' and '2' ");
assertTrue(sqlStatement.getWhere().isPresent());
- Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).checkIsSinglePointQuery(sqlStatement.getWhere().get()));
+ Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker(sqlStatement).checkIsSinglePointQuery(sqlStatement.getWhere().get()));
assertThat(ex.getMessage(), is("Only support binary operation
expression."));
}
@@ -62,7 +61,7 @@ class CommonHeterogeneousSQLStatementCheckerTest {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where rowKey in ('1', '2') ");
Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
assertTrue(whereSegment.isPresent());
- new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).checkInExpressionIsExpected(whereSegment.get().getExpr());
+ new
CommonHeterogeneousSQLStatementChecker(sqlStatement).checkInExpressionIsExpected(whereSegment.get().getExpr());
}
@Test
@@ -70,7 +69,7 @@ class CommonHeterogeneousSQLStatementCheckerTest {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where rowKey not in ('1', '2') ");
Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
assertTrue(whereSegment.isPresent());
- Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).checkInExpressionIsExpected(whereSegment.get().getExpr()));
+ Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker(sqlStatement).checkInExpressionIsExpected(whereSegment.get().getExpr()));
assertThat(ex.getMessage(), is("Do not supported `not in`."));
}
@@ -79,7 +78,7 @@ class CommonHeterogeneousSQLStatementCheckerTest {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where a in ('1', '2') ");
Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
assertTrue(whereSegment.isPresent());
- Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).checkInExpressionIsExpected(whereSegment.get().getExpr()));
+ Exception ex = assertThrows(IllegalArgumentException.class, () -> new
CommonHeterogeneousSQLStatementChecker(sqlStatement).checkInExpressionIsExpected(whereSegment.get().getExpr()));
assertThat(ex.getMessage(), is("a is not a allowed key."));
}
@@ -89,9 +88,9 @@ class CommonHeterogeneousSQLStatementCheckerTest {
Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
assertTrue(whereSegment.isPresent());
BetweenExpression betweenExpression = (BetweenExpression)
whereSegment.get().getExpr();
- CommonHeterogeneousSQLStatementChecker<SQLStatement>
commonHeterogeneousSQLStatementChecker = new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement);
-
assertTrue(commonHeterogeneousSQLStatementChecker.isAllowExpressionSegment(betweenExpression.getBetweenExpr()));
-
assertTrue(commonHeterogeneousSQLStatementChecker.isAllowExpressionSegment(betweenExpression.getAndExpr()));
+ CommonHeterogeneousSQLStatementChecker checker = new
CommonHeterogeneousSQLStatementChecker(sqlStatement);
+
assertTrue(checker.isAllowExpressionSegment(betweenExpression.getBetweenExpr()));
+
assertTrue(checker.isAllowExpressionSegment(betweenExpression.getAndExpr()));
}
@Test
@@ -99,6 +98,6 @@ class CommonHeterogeneousSQLStatementCheckerTest {
SelectStatement sqlStatement = (SelectStatement)
HBaseSupportedSQLStatement.parseSQLStatement("select /*+ hbase */ * from
t_order where rowKey = '1'");
Optional<WhereSegment> whereSegment = sqlStatement.getWhere();
assertTrue(whereSegment.isPresent());
- assertFalse(new
CommonHeterogeneousSQLStatementChecker<>(sqlStatement).isAllowExpressionSegment(whereSegment.get().getExpr()));
+ assertFalse(new
CommonHeterogeneousSQLStatementChecker(sqlStatement).isAllowExpressionSegment(whereSegment.get().getExpr()));
}
}
diff --git
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactoryTest.java
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactoryTest.java
index 2e906d8ed67..9f4408e0505 100644
---
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactoryTest.java
+++
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/checker/HBaseCheckerFactoryTest.java
@@ -35,7 +35,7 @@ class HBaseCheckerFactoryTest {
@Test
void assertExecuteSelectStatement() {
SQLStatement sqlStatement = mock(MySQLSelectStatement.class);
- HeterogeneousSQLStatementChecker<?> actual =
HBaseCheckerFactory.newInstance(sqlStatement);
+ HeterogeneousSQLStatementChecker actual =
HBaseCheckerFactory.newInstance(sqlStatement);
assertThat(actual,
instanceOf(HeterogeneousSelectStatementChecker.class));
assertThat(actual.getSqlStatement(), is(sqlStatement));
}
@@ -43,7 +43,7 @@ class HBaseCheckerFactoryTest {
@Test
void assertExecuteInsertStatement() {
SQLStatement sqlStatement = mock(MySQLInsertStatement.class);
- HeterogeneousSQLStatementChecker<?> actual =
HBaseCheckerFactory.newInstance(sqlStatement);
+ HeterogeneousSQLStatementChecker actual =
HBaseCheckerFactory.newInstance(sqlStatement);
assertThat(actual,
instanceOf(HeterogeneousInsertStatementChecker.class));
assertThat(actual.getSqlStatement(), is(sqlStatement));
}
@@ -51,7 +51,7 @@ class HBaseCheckerFactoryTest {
@Test
void assertExecuteUpdateStatement() {
SQLStatement sqlStatement = mock(MySQLUpdateStatement.class);
- HeterogeneousSQLStatementChecker<?> actual =
HBaseCheckerFactory.newInstance(sqlStatement);
+ HeterogeneousSQLStatementChecker actual =
HBaseCheckerFactory.newInstance(sqlStatement);
assertThat(actual,
instanceOf(HeterogeneousUpdateStatementChecker.class));
assertThat(actual.getSqlStatement(), is(sqlStatement));
}
@@ -59,7 +59,7 @@ class HBaseCheckerFactoryTest {
@Test
void assertExecuteDeleteStatement() {
SQLStatement sqlStatement = mock(MySQLDeleteStatement.class);
- HeterogeneousSQLStatementChecker<?> actual =
HBaseCheckerFactory.newInstance(sqlStatement);
+ HeterogeneousSQLStatementChecker actual =
HBaseCheckerFactory.newInstance(sqlStatement);
assertThat(actual,
instanceOf(HeterogeneousDeleteStatementChecker.class));
assertThat(actual.getSqlStatement(), is(sqlStatement));
}
@@ -67,7 +67,7 @@ class HBaseCheckerFactoryTest {
@Test
void assertExecuteOtherStatement() {
SQLStatement sqlStatement = mock(MySQLShowCreateTableStatement.class);
- HeterogeneousSQLStatementChecker<?> actual =
HBaseCheckerFactory.newInstance(sqlStatement);
+ HeterogeneousSQLStatementChecker actual =
HBaseCheckerFactory.newInstance(sqlStatement);
assertThat(actual,
instanceOf(CommonHeterogeneousSQLStatementChecker.class));
assertThat(actual.getSqlStatement(), is(sqlStatement));
}