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

zhangliang 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 43ece8b3154 Format SQL of PrestoMetaDataLoader and HiveMetaDataLoader 
(#36813)
43ece8b3154 is described below

commit 43ece8b31545bf2e1de240a8068f7060dc0c759d
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Oct 8 00:32:23 2025 +0800

    Format SQL of PrestoMetaDataLoader and HiveMetaDataLoader (#36813)
---
 .../metadata/data/loader/HiveMetaDataLoader.java   | 52 +++++++---------------
 .../metadata/data/loader/PrestoMetaDataLoader.java | 24 ++--------
 2 files changed, 21 insertions(+), 55 deletions(-)

diff --git 
a/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
 
b/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
index 9a66328bdd5..66e0fc57acf 100644
--- 
a/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
+++ 
b/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
@@ -29,6 +29,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.sql.Types;
 import java.util.Collection;
 import java.util.Collections;
@@ -45,15 +46,10 @@ import java.util.stream.Collectors;
  */
 public final class HiveMetaDataLoader implements DialectMetaDataLoader {
     
-    @SuppressWarnings("SqlNoDataSourceInspection")
     @Override
     public Collection<SchemaMetaData> load(final MetaDataLoaderMaterial 
material) throws SQLException {
-        boolean informationSchemaFlag;
-        try (Connection connection = material.getDataSource().getConnection()) 
{
-            informationSchemaFlag = 
connection.createStatement().executeQuery("SHOW DATABASES LIKE 
'INFORMATION_SCHEMA'").next();
-        }
         Collection<TableMetaData> tableMetaData = new LinkedList<>();
-        if (informationSchemaFlag) {
+        if (loadInformationSchemaFlag(material)) {
             try (Connection connection = 
material.getDataSource().getConnection()) {
                 Map<String, Collection<ColumnMetaData>> columnMetaDataMap = 
loadColumnMetaDataMap(connection, material.getActualTableNames());
                 for (Map.Entry<String, Collection<ColumnMetaData>> entry : 
columnMetaDataMap.entrySet()) {
@@ -65,18 +61,20 @@ public final class HiveMetaDataLoader implements 
DialectMetaDataLoader {
         for (String each : material.getActualTableNames()) {
             TableMetaDataLoader.load(material.getDataSource(), each, 
material.getStorageType()).ifPresent(tableMetaData::add);
         }
-        return Collections.singletonList(new 
SchemaMetaData(material.getDefaultSchemaName(), tableMetaData));
+        return Collections.singleton(new 
SchemaMetaData(material.getDefaultSchemaName(), tableMetaData));
+    }
+    
+    private boolean loadInformationSchemaFlag(final MetaDataLoaderMaterial 
material) throws SQLException {
+        String sql = "SHOW DATABASES LIKE 'INFORMATION_SCHEMA'";
+        try (
+                Connection connection = 
material.getDataSource().getConnection();
+                Statement statement = connection.createStatement();
+                ResultSet resultSet = statement.executeQuery(sql)) {
+            return resultSet.next();
+        }
     }
     
-    /**
-     * For apache/hive 4.0.1, `org.apache.hive.jdbc.HiveConnection` does not 
implement {@link java.sql.Connection#getCatalog}.
-     *
-     * @param connection connection
-     * @param tables     tables
-     * @return a map of table name to its column metadata
-     * @throws SQLException SQL exception
-     */
-    @SuppressWarnings("SqlSourceToSinkFlow")
+    @SuppressWarnings("CollectionWithoutInitialCapacity")
     private Map<String, Collection<ColumnMetaData>> 
loadColumnMetaDataMap(final Connection connection, final Collection<String> 
tables) throws SQLException {
         Map<String, Collection<ColumnMetaData>> result = new HashMap<>();
         try (PreparedStatement preparedStatement = 
connection.prepareStatement(getTableMetaDataSQL(tables))) {
@@ -97,27 +95,11 @@ public final class HiveMetaDataLoader implements 
DialectMetaDataLoader {
     
     private String getTableMetaDataSQL(final Collection<String> tables) {
         if (tables.isEmpty()) {
-            return "SELECT TABLE_CATALOG,\n"
-                    + "       TABLE_NAME,\n"
-                    + "       COLUMN_NAME,\n"
-                    + "       DATA_TYPE,\n"
-                    + "       ORDINAL_POSITION,\n"
-                    + "       IS_NULLABLE\n"
-                    + "FROM INFORMATION_SCHEMA.COLUMNS\n"
-                    + "WHERE TABLE_CATALOG = ?\n"
-                    + "ORDER BY ORDINAL_POSITION";
+            return "SELECT 
TABLE_CATALOG,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ORDINAL_POSITION,IS_NULLABLE 
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG=? ORDER BY 
ORDINAL_POSITION";
         }
         String tableNames = tables.stream().map(each -> String.format("'%s'", 
each).toUpperCase()).collect(Collectors.joining(","));
-        return String.format("SELECT TABLE_CATALOG,\n"
-                + "       TABLE_NAME,\n"
-                + "       COLUMN_NAME,\n"
-                + "       DATA_TYPE,\n"
-                + "       ORDINAL_POSITION,\n"
-                + "       IS_NULLABLE\n"
-                + "FROM INFORMATION_SCHEMA.COLUMNS\n"
-                + "WHERE TABLE_CATALOG = ?\n"
-                + "  AND UPPER(TABLE_NAME) IN (%s)\n"
-                + "ORDER BY ORDINAL_POSITION", tableNames);
+        return String.format("SELECT 
TABLE_CATALOG,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ORDINAL_POSITION,IS_NULLABLE 
FROM INFORMATION_SCHEMA.COLUMNS"
+                + " WHERE TABLE_CATALOG=? AND UPPER(TABLE_NAME) IN (%s) ORDER 
BY ORDINAL_POSITION", tableNames);
     }
     
     private ColumnMetaData loadColumnMetaData(final ResultSet resultSet) 
throws SQLException {
diff --git 
a/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/metadata/data/loader/PrestoMetaDataLoader.java
 
b/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/metadata/data/loader/PrestoMetaDataLoader.java
index a26cf71e665..aaa8d8c885d 100644
--- 
a/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/metadata/data/loader/PrestoMetaDataLoader.java
+++ 
b/database/connector/dialect/presto/src/main/java/org/apache/shardingsphere/database/connector/presto/metadata/data/loader/PrestoMetaDataLoader.java
@@ -57,7 +57,7 @@ public final class PrestoMetaDataLoader implements 
DialectMetaDataLoader {
         return Collections.singleton(new 
SchemaMetaData(material.getDefaultSchemaName(), tableMetaDataList));
     }
     
-    @SuppressWarnings("SqlSourceToSinkFlow")
+    @SuppressWarnings("CollectionWithoutInitialCapacity")
     private Map<String, Collection<ColumnMetaData>> 
loadColumnMetaDataMap(final Connection connection, final Collection<String> 
tables) throws SQLException {
         Map<String, Collection<ColumnMetaData>> result = new HashMap<>();
         try (PreparedStatement preparedStatement = 
connection.prepareStatement(getTableMetaDataSQL(tables))) {
@@ -78,27 +78,11 @@ public final class PrestoMetaDataLoader implements 
DialectMetaDataLoader {
     
     private String getTableMetaDataSQL(final Collection<String> tables) {
         if (tables.isEmpty()) {
-            return "SELECT TABLE_CATALOG,\n"
-                    + "       TABLE_NAME,\n"
-                    + "       COLUMN_NAME,\n"
-                    + "       DATA_TYPE,\n"
-                    + "       ORDINAL_POSITION,\n"
-                    + "       IS_NULLABLE\n"
-                    + "FROM INFORMATION_SCHEMA.COLUMNS\n"
-                    + "WHERE TABLE_CATALOG = ?\n"
-                    + "ORDER BY ORDINAL_POSITION";
+            return "SELECT 
TABLE_CATALOG,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ORDINAL_POSITION,IS_NULLABLE 
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG=? ORDER BY 
ORDINAL_POSITION";
         }
         String tableNames = tables.stream().map(each -> String.format("'%s'", 
each).toUpperCase()).collect(Collectors.joining(","));
-        return String.format("SELECT TABLE_CATALOG,\n"
-                + "       TABLE_NAME,\n"
-                + "       COLUMN_NAME,\n"
-                + "       DATA_TYPE,\n"
-                + "       ORDINAL_POSITION,\n"
-                + "       IS_NULLABLE\n"
-                + "FROM INFORMATION_SCHEMA.COLUMNS\n"
-                + "WHERE TABLE_CATALOG = ?\n"
-                + "  AND UPPER(TABLE_NAME) IN (%s)\n"
-                + "ORDER BY ORDINAL_POSITION", tableNames);
+        return String.format("SELECT 
TABLE_CATALOG,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ORDINAL_POSITION,IS_NULLABLE 
FROM INFORMATION_SCHEMA.COLUMNS"
+                + " WHERE TABLE_CATALOG=? AND UPPER(TABLE_NAME) IN (%s) ORDER 
BY ORDINAL_POSITION", tableNames);
     }
     
     private ColumnMetaData loadColumnMetaData(final ResultSet resultSet) 
throws SQLException {

Reply via email to