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

yuqi1129 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 86a235bf9c [MINOR] refactor(spark-connector): Align JDBC connector 
common logic (#11847)
86a235bf9c is described below

commit 86a235bf9c9335fd4f07ae6d95ad5d8f2cf22fa8
Author: Yuhui <[email protected]>
AuthorDate: Thu Jul 2 09:45:29 2026 +0800

    [MINOR] refactor(spark-connector): Align JDBC connector common logic 
(#11847)
    
    ### What changes were proposed in this pull request?
    
    Align common JDBC Spark connector logic and related tests.
    
    ### Why are the changes needed?
    
    Avoid PostgreSQL-specific naming in shared JDBC logic.
    
    Fix: #N/A
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Existing targeted Spark connector tests.
---
 .../spark/connector/jdbc/GravitinoJdbcCatalog.java |  5 +++++
 .../connector/jdbc/JdbcPropertiesConverter.java    |  8 +++++---
 .../connector/version/CatalogNameAdaptor.java      |  8 ++++----
 .../jdbc/TestJdbcPropertiesConverter.java          | 23 ++++++++++++++++++++++
 .../GravitinoPostgreSqlCatalogSpark33.java         |  2 +-
 .../connector/version/TestCatalogNameAdaptor.java  |  8 ++++++++
 .../GravitinoPostgreSqlCatalogSpark34.java         |  2 +-
 .../connector/version/TestCatalogNameAdaptor.java  |  8 ++++++++
 .../GravitinoPostgreSqlCatalogSpark35.java         |  2 +-
 .../connector/version/TestCatalogNameAdaptor.java  |  8 ++++++++
 10 files changed, 64 insertions(+), 10 deletions(-)

diff --git 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/GravitinoJdbcCatalog.java
 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/GravitinoJdbcCatalog.java
index 6e4f3e4975..aef1b5e250 100644
--- 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/GravitinoJdbcCatalog.java
+++ 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/GravitinoJdbcCatalog.java
@@ -39,9 +39,13 @@ import org.apache.spark.sql.errors.QueryCompilationErrors;
 import org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTable;
 import org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTableCatalog;
 import org.apache.spark.sql.util.CaseInsensitiveStringMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class GravitinoJdbcCatalog extends BaseCatalog {
 
+  private static final Logger LOG = 
LoggerFactory.getLogger(GravitinoJdbcCatalog.class);
+
   @Override
   protected TableCatalog createAndInitSparkCatalog(
       String name, CaseInsensitiveStringMap options, Map<String, String> 
properties) {
@@ -66,6 +70,7 @@ public class GravitinoJdbcCatalog extends BaseCatalog {
     try {
       credentials = catalog.supportsCredentials().getCredentials();
     } catch (UnsupportedOperationException e) {
+      LOG.debug("Catalog {} does not support credential vending, skipping.", 
catalog.name(), e);
       return;
     }
     for (Credential credential : credentials) {
diff --git 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/JdbcPropertiesConverter.java
 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/JdbcPropertiesConverter.java
index 7bd2a86b85..cbcac2fce6 100644
--- 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/JdbcPropertiesConverter.java
+++ 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/jdbc/JdbcPropertiesConverter.java
@@ -31,7 +31,8 @@ public class JdbcPropertiesConverter implements 
PropertiesConverter {
 
   public static class JdbcPropertiesConverterHolder {
     private static final JdbcPropertiesConverter INSTANCE = new 
JdbcPropertiesConverter();
-    private static final JdbcPropertiesConverter PG_INSTANCE = new 
JdbcPropertiesConverter(false);
+    private static final JdbcPropertiesConverter NO_TABLE_PROPERTIES_INSTANCE =
+        new JdbcPropertiesConverter(false);
   }
 
   private JdbcPropertiesConverter() {
@@ -46,8 +47,9 @@ public class JdbcPropertiesConverter implements 
PropertiesConverter {
     return JdbcPropertiesConverterHolder.INSTANCE;
   }
 
-  public static JdbcPropertiesConverter getPGInstance() {
-    return JdbcPropertiesConverterHolder.PG_INSTANCE;
+  /** Returns the singleton instance that does not support table-level 
properties. */
+  public static JdbcPropertiesConverter getNoTablePropertiesInstance() {
+    return JdbcPropertiesConverterHolder.NO_TABLE_PROPERTIES_INSTANCE;
   }
 
   private static final Map<String, String> GRAVITINO_CONFIG_TO_JDBC =
diff --git 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/version/CatalogNameAdaptor.java
 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/version/CatalogNameAdaptor.java
index c5c4bbcc78..4583a8e0ea 100644
--- 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/version/CatalogNameAdaptor.java
+++ 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/version/CatalogNameAdaptor.java
@@ -87,14 +87,14 @@ public class CatalogNameAdaptor {
   }
 
   private static String getCatalogName(String provider, int majorVersion, int 
minorVersion) {
+    String versionKey = String.format("%d.%d", majorVersion, minorVersion);
     if (provider.startsWith("jdbc")) {
       if (provider.startsWith("jdbc-postgresql")) {
-        return pgCatalogNames.get(String.format("%d.%d", majorVersion, 
minorVersion));
+        return pgCatalogNames.get(versionKey);
       }
-      return jdbcCatalogNames.get(String.format("%d.%d", majorVersion, 
minorVersion));
+      return jdbcCatalogNames.get(versionKey);
     }
-    String key =
-        String.format("%s-%d.%d", provider.toLowerCase(Locale.ROOT), 
majorVersion, minorVersion);
+    String key = String.format("%s-%s", provider.toLowerCase(Locale.ROOT), 
versionKey);
     return catalogNames.get(key);
   }
 
diff --git 
a/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/jdbc/TestJdbcPropertiesConverter.java
 
b/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/jdbc/TestJdbcPropertiesConverter.java
index 5d3e4d065f..33b704f11f 100644
--- 
a/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/jdbc/TestJdbcPropertiesConverter.java
+++ 
b/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/jdbc/TestJdbcPropertiesConverter.java
@@ -28,6 +28,29 @@ public class TestJdbcPropertiesConverter {
   private final JdbcPropertiesConverter jdbcPropertiesConverter =
       JdbcPropertiesConverter.getInstance();
 
+  @Test
+  void testGetNoTablePropertiesInstance() {
+    JdbcPropertiesConverter instance = 
JdbcPropertiesConverter.getNoTablePropertiesInstance();
+    Assertions.assertNotNull(instance);
+    Assertions.assertSame(instance, 
JdbcPropertiesConverter.getNoTablePropertiesInstance());
+    Assertions.assertNotSame(instance, JdbcPropertiesConverter.getInstance());
+
+    Map<String, String> emptyProps = 
instance.toGravitinoTableProperties(ImmutableMap.of());
+    Assertions.assertTrue(emptyProps.isEmpty());
+
+    Map<String, String> ownerProps =
+        instance.toGravitinoTableProperties(ImmutableMap.of("owner", "alice"));
+    Assertions.assertTrue(ownerProps.isEmpty());
+
+    Map<String, String> upperOwnerProps =
+        instance.toGravitinoTableProperties(ImmutableMap.of("OWNER", "bob"));
+    Assertions.assertTrue(upperOwnerProps.isEmpty());
+
+    Assertions.assertThrows(
+        UnsupportedOperationException.class,
+        () -> instance.toGravitinoTableProperties(ImmutableMap.of("someKey", 
"value")));
+  }
+
   @Test
   void testCatalogProperties() {
     String url = "jdbc-url";
diff --git 
a/spark-connector/v3.3/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark33.java
 
b/spark-connector/v3.3/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark33.java
index 147e23a889..6614a1111c 100644
--- 
a/spark-connector/v3.3/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark33.java
+++ 
b/spark-connector/v3.3/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark33.java
@@ -25,6 +25,6 @@ import 
org.apache.gravitino.spark.connector.jdbc.JdbcPropertiesConverter;
 public class GravitinoPostgreSqlCatalogSpark33 extends 
GravitinoJdbcCatalogSpark33 {
   @Override
   protected PropertiesConverter getPropertiesConverter() {
-    return JdbcPropertiesConverter.getPGInstance();
+    return JdbcPropertiesConverter.getNoTablePropertiesInstance();
   }
 }
diff --git 
a/spark-connector/v3.3/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
 
b/spark-connector/v3.3/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
index c600844506..2d82386d02 100644
--- 
a/spark-connector/v3.3/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
+++ 
b/spark-connector/v3.3/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
@@ -20,6 +20,8 @@ package org.apache.gravitino.spark.connector.version;
 
 import org.apache.gravitino.spark.connector.hive.GravitinoHiveCatalogSpark33;
 import 
org.apache.gravitino.spark.connector.iceberg.GravitinoIcebergCatalogSpark33;
+import org.apache.gravitino.spark.connector.jdbc.GravitinoJdbcCatalogSpark33;
+import 
org.apache.gravitino.spark.connector.jdbc.postgresql.GravitinoPostgreSqlCatalogSpark33;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -36,5 +38,11 @@ public class TestCatalogNameAdaptor {
     Assertions.assertEquals(
         
"org.apache.gravitino.spark.connector.paimon.GravitinoPaimonCatalogSpark33",
         paimonCatalogName);
+
+    String pgCatalogName = 
CatalogNameAdaptor.getCatalogName("jdbc-postgresql");
+    Assertions.assertEquals(GravitinoPostgreSqlCatalogSpark33.class.getName(), 
pgCatalogName);
+
+    String jdbcCatalogName = CatalogNameAdaptor.getCatalogName("jdbc");
+    Assertions.assertEquals(GravitinoJdbcCatalogSpark33.class.getName(), 
jdbcCatalogName);
   }
 }
diff --git 
a/spark-connector/v3.4/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark34.java
 
b/spark-connector/v3.4/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark34.java
index 545f85378c..61c1c32751 100644
--- 
a/spark-connector/v3.4/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark34.java
+++ 
b/spark-connector/v3.4/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark34.java
@@ -25,6 +25,6 @@ import 
org.apache.gravitino.spark.connector.jdbc.JdbcPropertiesConverter;
 public class GravitinoPostgreSqlCatalogSpark34 extends GravitinoJdbcCatalog {
   @Override
   protected PropertiesConverter getPropertiesConverter() {
-    return JdbcPropertiesConverter.getPGInstance();
+    return JdbcPropertiesConverter.getNoTablePropertiesInstance();
   }
 }
diff --git 
a/spark-connector/v3.4/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
 
b/spark-connector/v3.4/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
index 1924a2c4e8..ad50652ffc 100644
--- 
a/spark-connector/v3.4/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
+++ 
b/spark-connector/v3.4/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
@@ -20,6 +20,8 @@ package org.apache.gravitino.spark.connector.version;
 
 import org.apache.gravitino.spark.connector.hive.GravitinoHiveCatalogSpark34;
 import 
org.apache.gravitino.spark.connector.iceberg.GravitinoIcebergCatalogSpark34;
+import org.apache.gravitino.spark.connector.jdbc.GravitinoJdbcCatalogSpark34;
+import 
org.apache.gravitino.spark.connector.jdbc.postgresql.GravitinoPostgreSqlCatalogSpark34;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -36,5 +38,11 @@ public class TestCatalogNameAdaptor {
     Assertions.assertEquals(
         
"org.apache.gravitino.spark.connector.paimon.GravitinoPaimonCatalogSpark34",
         paimonCatalogName);
+
+    String pgCatalogName = 
CatalogNameAdaptor.getCatalogName("jdbc-postgresql");
+    Assertions.assertEquals(GravitinoPostgreSqlCatalogSpark34.class.getName(), 
pgCatalogName);
+
+    String jdbcCatalogName = CatalogNameAdaptor.getCatalogName("jdbc");
+    Assertions.assertEquals(GravitinoJdbcCatalogSpark34.class.getName(), 
jdbcCatalogName);
   }
 }
diff --git 
a/spark-connector/v3.5/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark35.java
 
b/spark-connector/v3.5/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark35.java
index 709013786c..fc8a4367ec 100644
--- 
a/spark-connector/v3.5/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark35.java
+++ 
b/spark-connector/v3.5/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark35.java
@@ -25,6 +25,6 @@ import 
org.apache.gravitino.spark.connector.jdbc.JdbcPropertiesConverter;
 public class GravitinoPostgreSqlCatalogSpark35 extends GravitinoJdbcCatalog {
   @Override
   protected PropertiesConverter getPropertiesConverter() {
-    return JdbcPropertiesConverter.getPGInstance();
+    return JdbcPropertiesConverter.getNoTablePropertiesInstance();
   }
 }
diff --git 
a/spark-connector/v3.5/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
 
b/spark-connector/v3.5/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
index 119817d39f..28d9337242 100644
--- 
a/spark-connector/v3.5/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
+++ 
b/spark-connector/v3.5/spark/src/test/java/org/apache/gravitino/spark/connector/version/TestCatalogNameAdaptor.java
@@ -20,6 +20,8 @@ package org.apache.gravitino.spark.connector.version;
 
 import org.apache.gravitino.spark.connector.hive.GravitinoHiveCatalogSpark35;
 import 
org.apache.gravitino.spark.connector.iceberg.GravitinoIcebergCatalogSpark35;
+import org.apache.gravitino.spark.connector.jdbc.GravitinoJdbcCatalogSpark35;
+import 
org.apache.gravitino.spark.connector.jdbc.postgresql.GravitinoPostgreSqlCatalogSpark35;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -36,5 +38,11 @@ public class TestCatalogNameAdaptor {
     Assertions.assertEquals(
         
"org.apache.gravitino.spark.connector.paimon.GravitinoPaimonCatalogSpark35",
         paimonCatalogName);
+
+    String pgCatalogName = 
CatalogNameAdaptor.getCatalogName("jdbc-postgresql");
+    Assertions.assertEquals(GravitinoPostgreSqlCatalogSpark35.class.getName(), 
pgCatalogName);
+
+    String jdbcCatalogName = CatalogNameAdaptor.getCatalogName("jdbc");
+    Assertions.assertEquals(GravitinoJdbcCatalogSpark35.class.getName(), 
jdbcCatalogName);
   }
 }

Reply via email to