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 9d2282465e3 Fix NoSuchElementException when use system database
(#23726)
9d2282465e3 is described below
commit 9d2282465e353d6de512639445f1c8687c5e0fcb
Author: zhaojinchao <[email protected]>
AuthorDate: Wed Jan 25 20:30:36 2023 +0800
Fix NoSuchElementException when use system database (#23726)
* Fix NoSuchElementException when use system database
* Avoid set null
---
.../infra/rewrite/engine/GenericSQLRewriteEngine.java | 3 ++-
.../infra/rewrite/engine/GenericSQLRewriteEngineTest.java | 9 +++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
index e70e5db7214..5037c56a597 100644
---
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
+++
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java
@@ -47,7 +47,8 @@ public final class GenericSQLRewriteEngine {
*/
public GenericSQLRewriteResult rewrite(final SQLRewriteContext
sqlRewriteContext) {
String sql = translatorRule.translate(
- new DefaultSQLBuilder(sqlRewriteContext).toSQL(),
sqlRewriteContext.getSqlStatementContext().getSqlStatement(), protocolType,
storageTypes.values().iterator().next());
+ new DefaultSQLBuilder(sqlRewriteContext).toSQL(),
sqlRewriteContext.getSqlStatementContext().getSqlStatement(), protocolType,
+ !storageTypes.isEmpty() ?
storageTypes.values().iterator().next() : protocolType);
return new GenericSQLRewriteResult(new SQLRewriteUnit(sql,
sqlRewriteContext.getParameterBuilder().getParameters()));
}
}
diff --git
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
index afd613c8f18..7ebdd8ef865 100644
---
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
+++
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
@@ -45,4 +45,13 @@ public final class GenericSQLRewriteEngineTest {
assertThat(actual.getSqlRewriteUnit().getSql(), is("SELECT 1"));
assertThat(actual.getSqlRewriteUnit().getParameters(),
is(Collections.emptyList()));
}
+
+ @Test
+ public void assertRewriteStorageTypeIsEmpty() {
+ SQLTranslatorRule rule = new SQLTranslatorRule(new
SQLTranslatorRuleConfiguration());
+ GenericSQLRewriteResult actual = new GenericSQLRewriteEngine(rule,
mock(DatabaseType.class), Collections.emptyMap()).rewrite(new
SQLRewriteContext(DefaultDatabase.LOGIC_NAME,
+ Collections.singletonMap("test",
mock(ShardingSphereSchema.class)), mock(SQLStatementContext.class), "SELECT 1",
Collections.emptyList(), mock(ConnectionContext.class)));
+ assertThat(actual.getSqlRewriteUnit().getSql(), is("SELECT 1"));
+ assertThat(actual.getSqlRewriteUnit().getParameters(),
is(Collections.emptyList()));
+ }
}