You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/02/01 11:35:57 UTC

[shardingsphere] branch master updated: Replace `SQLTranslatorRuleResultSet` with `ShowSQLTranslatorRuleExecutor` (#23902)

This is an automated email from the ASF dual-hosted git repository.

jianglongtao 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 c4fede5a2db Replace `SQLTranslatorRuleResultSet` with `ShowSQLTranslatorRuleExecutor` (#23902)
c4fede5a2db is described below

commit c4fede5a2db338279008cd0c1542d746c6da4438
Author: Zichao <57...@users.noreply.github.com>
AuthorDate: Thu Feb 2 00:35:42 2023 +1300

    Replace `SQLTranslatorRuleResultSet` with `ShowSQLTranslatorRuleExecutor` (#23902)
---
 ...Set.java => ShowSQLTranslatorRuleExecutor.java} | 37 +++--------
 ...distsql.handler.ral.query.QueryableRALExecutor} |  2 +-
 .../handler/SQLTranslatorRuleResultSetTest.java    | 57 -----------------
 .../handler/ShowSQLTranslatorRuleExecutorTest.java | 73 ++++++++++++++++++++++
 4 files changed, 84 insertions(+), 85 deletions(-)

diff --git a/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java b/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/ShowSQLTranslatorRuleExecutor.java
similarity index 51%
rename from kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java
rename to kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/ShowSQLTranslatorRuleExecutor.java
index 357a1658636..fa37d1f9a15 100644
--- a/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java
+++ b/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/ShowSQLTranslatorRuleExecutor.java
@@ -17,9 +17,9 @@
 
 package org.apache.shardingsphere.sqltranslator.distsql.handler;
 
-import org.apache.shardingsphere.distsql.handler.resultset.GlobalRuleDistSQLResultSet;
-import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.distsql.handler.ral.query.MetaDataRequiredQueryableRALExecutor;
+import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
 import org.apache.shardingsphere.sqltranslator.distsql.parser.statement.ShowSQLTranslatorRuleStatement;
 import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
@@ -27,42 +27,25 @@ import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 
 /**
  * Result set for SQL translator rule.
  */
-public final class SQLTranslatorRuleResultSet implements GlobalRuleDistSQLResultSet {
-    
-    private static final String TYPE = "type";
-    
-    private static final String USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED = "use_original_sql_when_translating_failed";
-    
-    private Iterator<Collection<Object>> data;
+public final class ShowSQLTranslatorRuleExecutor implements MetaDataRequiredQueryableRALExecutor<ShowSQLTranslatorRuleStatement> {
     
     @Override
-    public void init(final ShardingSphereRuleMetaData globalRuleMetaData, final SQLStatement sqlStatement) {
-        SQLTranslatorRule rule = globalRuleMetaData.getSingleRule(SQLTranslatorRule.class);
-        data = buildData(rule.getConfiguration()).iterator();
+    public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereMetaData metaData, final ShowSQLTranslatorRuleStatement sqlStatement) {
+        SQLTranslatorRule rule = metaData.getGlobalRuleMetaData().getSingleRule(SQLTranslatorRule.class);
+        return buildData(rule.getConfiguration());
     }
     
-    private Collection<Collection<Object>> buildData(final SQLTranslatorRuleConfiguration ruleConfig) {
-        return Collections.singleton(Arrays.asList(null != ruleConfig.getType() ? ruleConfig.getType() : "", String.valueOf(ruleConfig.isUseOriginalSQLWhenTranslatingFailed())));
+    private Collection<LocalDataQueryResultRow> buildData(final SQLTranslatorRuleConfiguration ruleConfig) {
+        return Collections.singleton(new LocalDataQueryResultRow(null != ruleConfig.getType() ? ruleConfig.getType() : "", String.valueOf(ruleConfig.isUseOriginalSQLWhenTranslatingFailed())));
     }
     
     @Override
     public Collection<String> getColumnNames() {
-        return Arrays.asList(TYPE, USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED);
-    }
-    
-    @Override
-    public boolean next() {
-        return data.hasNext();
-    }
-    
-    @Override
-    public Collection<Object> getRowData() {
-        return data.next();
+        return Arrays.asList("type", "use_original_sql_when_translating_failed");
     }
     
     @Override
diff --git a/kernel/sql-translator/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet b/kernel/sql-translator/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.query.QueryableRALExecutor
similarity index 90%
rename from kernel/sql-translator/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
rename to kernel/sql-translator/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.query.QueryableRALExecutor
index 7877b63d807..f4756663dd8 100644
--- a/kernel/sql-translator/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
+++ b/kernel/sql-translator/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.query.QueryableRALExecutor
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.sqltranslator.distsql.handler.SQLTranslatorRuleResultSet
+org.apache.shardingsphere.sqltranslator.distsql.handler.ShowSQLTranslatorRuleExecutor
diff --git a/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSetTest.java b/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSetTest.java
deleted file mode 100644
index 730f54114b9..00000000000
--- a/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSetTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sqltranslator.distsql.handler;
-
-import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
-import org.apache.shardingsphere.sqltranslator.distsql.parser.statement.ShowSQLTranslatorRuleStatement;
-import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
-import org.junit.Test;
-
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public final class SQLTranslatorRuleResultSetTest {
-    
-    @Test
-    public void assertExecute() {
-        ShardingSphereRuleMetaData ruleMetaData = mockGlobalRuleMetaData();
-        SQLTranslatorRuleResultSet resultSet = new SQLTranslatorRuleResultSet();
-        resultSet.init(ruleMetaData, mock(ShowSQLTranslatorRuleStatement.class));
-        Collection<Object> actual = resultSet.getRowData();
-        assertThat(actual.size(), is(2));
-        assertTrue(actual.contains("NATIVE"));
-        assertTrue(actual.contains(Boolean.TRUE.toString()));
-    }
-    
-    private ShardingSphereRuleMetaData mockGlobalRuleMetaData() {
-        SQLTranslatorRule authorityRule = mock(SQLTranslatorRule.class);
-        when(authorityRule.getConfiguration()).thenReturn(createSQLTranslatorRuleConfiguration());
-        return new ShardingSphereRuleMetaData(Collections.singleton(authorityRule));
-    }
-    
-    private SQLTranslatorRuleConfiguration createSQLTranslatorRuleConfiguration() {
-        return new SQLTranslatorRuleConfiguration("NATIVE", true);
-    }
-}
diff --git a/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/ShowSQLTranslatorRuleExecutorTest.java b/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/ShowSQLTranslatorRuleExecutorTest.java
new file mode 100644
index 00000000000..34f10d72183
--- /dev/null
+++ b/kernel/sql-translator/distsql/handler/src/test/java/org/apache/shardingsphere/sqltranslator/distsql/handler/ShowSQLTranslatorRuleExecutorTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sqltranslator.distsql.handler;
+
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
+import org.apache.shardingsphere.sqltranslator.distsql.parser.statement.ShowSQLTranslatorRuleStatement;
+import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
+import org.junit.Test;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Properties;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class ShowSQLTranslatorRuleExecutorTest {
+    
+    @Test
+    public void assertExecute() {
+        ShardingSphereMetaData ruleMetaData = mockGlobalRuleMetaData();
+        ShowSQLTranslatorRuleExecutor executor = new ShowSQLTranslatorRuleExecutor();
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(ruleMetaData, mock(ShowSQLTranslatorRuleStatement.class));
+        assertThat(actual.size(), is(1));
+        Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
+        LocalDataQueryResultRow row = iterator.next();
+        assertThat(row.getCell(1), is("NATIVE"));
+        assertThat(row.getCell(2), is("true"));
+    }
+    
+    @Test
+    public void assertGetColumnNames() {
+        ShowSQLTranslatorRuleExecutor executor = new ShowSQLTranslatorRuleExecutor();
+        Collection<String> columns = executor.getColumnNames();
+        assertThat(columns.size(), is(2));
+        Iterator<String> iterator = columns.iterator();
+        assertThat(iterator.next(), is("type"));
+        assertThat(iterator.next(), is("use_original_sql_when_translating_failed"));
+    }
+    
+    private ShardingSphereMetaData mockGlobalRuleMetaData() {
+        SQLTranslatorRule sqlTranslatorRule = mock(SQLTranslatorRule.class);
+        when(sqlTranslatorRule.getConfiguration()).thenReturn(createSQLTranslatorRuleConfiguration());
+        return new ShardingSphereMetaData(new LinkedHashMap<>(), new ShardingSphereRuleMetaData(Collections.singleton(sqlTranslatorRule)), new ConfigurationProperties(new Properties()));
+    }
+    
+    private SQLTranslatorRuleConfiguration createSQLTranslatorRuleConfiguration() {
+        return new SQLTranslatorRuleConfiguration("NATIVE", true);
+    }
+}