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;
}