You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/01/17 03:20:10 UTC

[shardingsphere] branch master updated: Add props to the result set of `SHOW TRANSACTION RULE` (#14813)

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

panjuan 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 75ca1a9  Add props to the result set of `SHOW TRANSACTION RULE` (#14813)
75ca1a9 is described below

commit 75ca1a947e44e2c057408cc46972ca77fc2d08d6
Author: Raigor <ra...@gmail.com>
AuthorDate: Mon Jan 17 11:19:00 2022 +0800

    Add props to the result set of `SHOW TRANSACTION RULE` (#14813)
---
 .../show/executor/ShowTransactionRuleExecutor.java |  7 ++++++-
 .../show/ShowTransactionRuleExecutorTest.java      | 24 ++++++++++++++++------
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java
index 05f2106..2b11271 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
 
+import com.google.gson.Gson;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -39,11 +40,14 @@ public final class ShowTransactionRuleExecutor extends AbstractShowExecutor {
     
     private static final String PROVIDER_TYPE = "provider_type";
     
+    private static final String PROPS = "props";
+    
     @Override
     protected List<QueryHeader> createQueryHeaders() {
         return Arrays.asList(
                 new QueryHeader("", "", DEFAULT_TYPE, DEFAULT_TYPE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
-                new QueryHeader("", "", PROVIDER_TYPE, PROVIDER_TYPE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false));
+                new QueryHeader("", "", PROVIDER_TYPE, PROVIDER_TYPE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
+                new QueryHeader("", "", PROPS, PROPS, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false));
     }
     
     @Override
@@ -57,6 +61,7 @@ public final class ShowTransactionRuleExecutor extends AbstractShowExecutor {
         List<Object> row = new LinkedList<>();
         row.add(transactionRuleConfiguration.getDefaultType());
         row.add(null == transactionRuleConfiguration.getProviderType() ? "" : transactionRuleConfiguration.getProviderType());
+        row.add(null == transactionRuleConfiguration.getProps() ? "" : new Gson().toJson(transactionRuleConfiguration.getProps()));
         Collection<List<Object>> rows = new LinkedList<>();
         rows.add(row);
         return new MultipleLocalDataMergedResult(rows);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java
index ccd4707..153641f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java
@@ -33,6 +33,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Properties;
 
+import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -47,33 +48,44 @@ public final class ShowTransactionRuleExecutorTest {
     @Test
     public void assertExecutorWithXA() throws SQLException {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
-        when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("XA", "Atomikos"));
+        when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("XA", "Atomikos", getProperties()));
         ProxyContext.getInstance().init(contextManager);
         executor.execute();
         executor.next();
         QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
         ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
-        assertThat(data.size(), is(2));
+        assertThat(data.size(), is(3));
         assertThat(data.get(0), is("XA"));
         assertThat(data.get(1), is("Atomikos"));
+        String props = String.valueOf(data.get(2));
+        assertThat(props, containsString("\"host\":\"127.0.0.1\""));
+        assertThat(props, containsString("\"databaseName\":\"jbossts\""));
     }
     
     @Test
     public void assertExecutorWithLocal() throws SQLException {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
-        when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("LOCAL", null));
+        when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("LOCAL", null, null));
         ProxyContext.getInstance().init(contextManager);
         executor.execute();
         executor.next();
         QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
         ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
-        assertThat(data.size(), is(2));
+        assertThat(data.size(), is(3));
         assertThat(data.get(0), is("LOCAL"));
         assertThat(data.get(1), is(""));
+        assertThat(data.get(2), is(""));
     }
     
-    private ShardingSphereRuleMetaData getGlobalRuleMetaData(final String defaultType, final String providerType) {
-        RuleConfiguration transactionRuleConfiguration = new TransactionRuleConfiguration(defaultType, providerType, new Properties());
+    private ShardingSphereRuleMetaData getGlobalRuleMetaData(final String defaultType, final String providerType, final Properties props) {
+        RuleConfiguration transactionRuleConfiguration = new TransactionRuleConfiguration(defaultType, providerType, props);
         return new ShardingSphereRuleMetaData(Collections.singleton(transactionRuleConfiguration), Collections.emptyList());
     }
+    
+    private Properties getProperties() {
+        Properties result = new Properties();
+        result.setProperty("host", "127.0.0.1");
+        result.setProperty("databaseName", "jbossts");
+        return result;
+    }
 }