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()));
+    }
 }

Reply via email to