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

mchades pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 6e5e30d61 [#3650] fix (trino-connector): Fix failed to run the tester 
jdbc-mysql/00008_alter_catalog in Trino distribution environment (#4497)
6e5e30d61 is described below

commit 6e5e30d61f747d492bcf9c7d9b695d40fe7bf031
Author: Yuhui <[email protected]>
AuthorDate: Fri Aug 16 19:11:05 2024 +0800

    [#3650] fix (trino-connector): Fix failed to run the tester 
jdbc-mysql/00008_alter_catalog in Trino distribution environment (#4497)
    
    ### What changes were proposed in this pull request?
    
    Fix failed to run the tester jdbc-mysql/00008_alter_catalog in Trino
    distribution environment
    
    ### Why are the changes needed?
    
    Fix: #3650
    
    ### Does this PR introduce _any_ user-facing change?
    
    NO
    
    ### How was this patch tested?
    
    Manually test
---
 .../testsets/jdbc-mysql/00008_alter_catalog.txt    |  8 +++----
 integration-test/trino-it/docker-compose.yaml      |  1 -
 integration-test/trino-it/init/hive/init.sh        |  2 --
 .../system/table/GravitinoSystemTableCatalog.java  | 27 ++++++++++++++++++----
 .../trino/connector/GravitinoMockServer.java       |  9 ++++++++
 5 files changed, 36 insertions(+), 11 deletions(-)

diff --git 
a/integration-test/src/test/resources/trino-ci-testset/testsets/jdbc-mysql/00008_alter_catalog.txt
 
b/integration-test/src/test/resources/trino-ci-testset/testsets/jdbc-mysql/00008_alter_catalog.txt
index 35dab129f..be0a71f3c 100644
--- 
a/integration-test/src/test/resources/trino-ci-testset/testsets/jdbc-mysql/00008_alter_catalog.txt
+++ 
b/integration-test/src/test/resources/trino-ci-testset/testsets/jdbc-mysql/00008_alter_catalog.txt
@@ -1,17 +1,17 @@
 CALL
 
-"gt_mysql_xxx1","jdbc-mysql","{""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""jdbc-password"":""ds123"",""jdbc-driver"":""com.mysql.cj.jdbc.Driver""}"
+"gt_mysql_xxx1","jdbc-mysql","{""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""jdbc-password"":""ds123"",""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino""}"
 
 CALL
 
-"gt_mysql_xxx1","jdbc-mysql","{""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""jdbc-password"":""ds123"",""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""test_key"":""test_value"",""trino.bypass.join-pushdown.strategy"":""EAGER""}"
+"gt_mysql_xxx1","jdbc-mysql","{""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""jdbc-password"":""ds123"",""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""test_key"":""test_value"",""trino.bypass.join-pushdown.strategy"":""EAGER""}"
 
 CALL
 
-"gt_mysql_xxx1","jdbc-mysql","{""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""jdbc-password"":""ds123"",""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""test_key"":""test_value""}"
+"gt_mysql_xxx1","jdbc-mysql","{""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""jdbc-password"":""ds123"",""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""test_key"":""test_value""}"
 
 CALL
 
-"gt_mysql_xxx1","jdbc-mysql","{""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""jdbc-password"":""ds123"",""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""trino.bypass.join-pushdown.strategy"":""EAGER""}"
+"gt_mysql_xxx1","jdbc-mysql","{""jdbc-driver"":""com.mysql.cj.jdbc.Driver"",""jdbc-password"":""ds123"",""jdbc-url"":""jdbc:mysql://%/?useSSL=false"",""jdbc-user"":""trino"",""trino.bypass.join-pushdown.strategy"":""EAGER""}"
 
 CALL
diff --git a/integration-test/trino-it/docker-compose.yaml 
b/integration-test/trino-it/docker-compose.yaml
index d985804b9..c00c1a45d 100644
--- a/integration-test/trino-it/docker-compose.yaml
+++ b/integration-test/trino-it/docker-compose.yaml
@@ -16,7 +16,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-#
 services:
 
   hive:
diff --git a/integration-test/trino-it/init/hive/init.sh 
b/integration-test/trino-it/init/hive/init.sh
index 315d2371b..35d9a8ccf 100755
--- a/integration-test/trino-it/init/hive/init.sh
+++ b/integration-test/trino-it/init/hive/init.sh
@@ -16,8 +16,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-#
-
 IP=$(hostname -I | awk '{print $1}')
 sed -i "s|<value>hdfs://__REPLACE__HOST_NAME:9000|<value>hdfs://${IP}:9000|g" 
${HIVE_TMP_CONF_DIR}/hive-site.xml
 
diff --git 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/system/table/GravitinoSystemTableCatalog.java
 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/system/table/GravitinoSystemTableCatalog.java
index 06d80f59f..6d540d21d 100644
--- 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/system/table/GravitinoSystemTableCatalog.java
+++ 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/system/table/GravitinoSystemTableCatalog.java
@@ -29,7 +29,11 @@ import io.trino.spi.block.BlockBuilder;
 import io.trino.spi.connector.ColumnMetadata;
 import io.trino.spi.connector.ConnectorTableMetadata;
 import io.trino.spi.connector.SchemaTableName;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.TreeMap;
+import org.apache.gravitino.Catalog;
+import org.apache.gravitino.client.GravitinoMetalake;
 import org.apache.gravitino.trino.connector.GravitinoErrorCode;
 import org.apache.gravitino.trino.connector.catalog.CatalogConnectorManager;
 import org.apache.gravitino.trino.connector.metadata.GravitinoCatalog;
@@ -56,21 +60,36 @@ public class GravitinoSystemTableCatalog extends 
GravitinoSystemTable {
 
   @Override
   public Page loadPageData() {
-    List<GravitinoCatalog> catalogs = catalogConnectorManager.getCatalogs();
-    int size = catalogs.size();
+    List<GravitinoCatalog> gravitinoCatalogs = new ArrayList<>();
+    // retrieve catalogs form the Gravitino server with the configuration 
metalakes,
+    // the catalogConnectorManager does not manager catalogs in worker nodes
+    catalogConnectorManager
+        .getUsedMetalakes()
+        .forEach(
+            (metalakeName) -> {
+              GravitinoMetalake metalake = 
catalogConnectorManager.getMetalake(metalakeName);
+              Catalog[] catalogs = metalake.listCatalogsInfo();
+              for (Catalog catalog : catalogs) {
+                if (catalog.type() == Catalog.Type.RELATIONAL) {
+                  gravitinoCatalogs.add(new GravitinoCatalog(metalakeName, 
catalog));
+                }
+              }
+            });
+    int size = gravitinoCatalogs.size();
 
     BlockBuilder nameColumnBuilder = VARCHAR.createBlockBuilder(null, size);
     BlockBuilder providerColumnBuilder = VARCHAR.createBlockBuilder(null, 
size);
     BlockBuilder propertyColumnBuilder = VARCHAR.createBlockBuilder(null, 
size);
 
-    for (GravitinoCatalog catalog : catalogs) {
+    for (GravitinoCatalog catalog : gravitinoCatalogs) {
       Preconditions.checkNotNull(catalog, "catalog should not be null");
 
       VARCHAR.writeString(nameColumnBuilder, catalog.getName());
       VARCHAR.writeString(providerColumnBuilder, catalog.getProvider());
       try {
         VARCHAR.writeString(
-            propertyColumnBuilder, new 
ObjectMapper().writeValueAsString(catalog.getProperties()));
+            propertyColumnBuilder,
+            new ObjectMapper().writeValueAsString(new 
TreeMap<>(catalog.getProperties())));
       } catch (JsonProcessingException e) {
         throw new TrinoException(
             GravitinoErrorCode.GRAVITINO_ILLEGAL_ARGUMENT, "Invalid property 
format", e); //
diff --git 
a/trino-connector/src/test/java/org/apache/gravitino/trino/connector/GravitinoMockServer.java
 
b/trino-connector/src/test/java/org/apache/gravitino/trino/connector/GravitinoMockServer.java
index 0cc026f9e..8cfb157b1 100644
--- 
a/trino-connector/src/test/java/org/apache/gravitino/trino/connector/GravitinoMockServer.java
+++ 
b/trino-connector/src/test/java/org/apache/gravitino/trino/connector/GravitinoMockServer.java
@@ -201,6 +201,15 @@ public class GravitinoMockServer implements AutoCloseable {
                 return metalakes.get(metalakeName).catalogs.get(catalogName);
               }
             });
+    when(metaLake.listCatalogsInfo())
+        .thenAnswer(
+            new Answer<Catalog[]>() {
+              @Override
+              public Catalog[] answer(InvocationOnMock invocation) throws 
Throwable {
+                return 
metalakes.get(metalakeName).catalogs.values().toArray(new Catalog[0]);
+              }
+            });
+
     metalakes.put(metalakeName, new Metalake(metaLake));
     return metaLake;
   }

Reply via email to