This is an automated email from the ASF dual-hosted git repository. zhangshenghang pushed a commit to branch revert-11127-fix/catalog-factory-option-validation in repository https://gitbox.apache.org/repos/asf/seatunnel.git
commit f288025bb08f484ef5028f625a81e5c8de6cb20f Author: Jast <[email protected]> AuthorDate: Mon Jun 22 10:33:11 2026 +0800 Revert "[Fix][API] Add missing OptionRule validation for CatalogFactory creat…" This reverts commit 0e2f4ef8d57000df40bfc2a3f32c635fe632b6c0. --- .../seatunnel/api/table/factory/FactoryUtil.java | 8 +-- .../api/table/catalog/CatalogTableUtilTest.java | 66 ---------------------- .../jdbc/catalog/duckdb/DuckDBCatalogFactory.java | 12 +--- .../lance/catalog/LanceCatalogFactory.java | 2 +- 4 files changed, 4 insertions(+), 84 deletions(-) diff --git a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java index a4f078db0c..8412bc60ce 100644 --- a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java +++ b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java @@ -286,17 +286,13 @@ public final class FactoryUtil { public static Optional<Catalog> createOptionalCatalog( String catalogName, - ReadonlyConfig readonlyConfig, + ReadonlyConfig options, ClassLoader classLoader, String factoryIdentifier) { Optional<CatalogFactory> optionalFactory = discoverOptionalFactory(classLoader, CatalogFactory.class, factoryIdentifier); - return optionalFactory.map( - catalogFactory -> { - ConfigValidator.of(readonlyConfig).validate(catalogFactory.optionRule()); - return catalogFactory.createCatalog(catalogName, readonlyConfig); - }); + catalogFactory -> catalogFactory.createCatalog(catalogName, options)); } public static <T extends Factory> URL getFactoryUrl(T factory) { diff --git a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java index e9cd815f27..73a6b3d47d 100644 --- a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java +++ b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java @@ -22,9 +22,7 @@ import org.apache.seatunnel.shade.com.typesafe.config.ConfigFactory; import org.apache.seatunnel.shade.com.typesafe.config.ConfigValueFactory; import org.apache.seatunnel.api.configuration.ReadonlyConfig; -import org.apache.seatunnel.api.configuration.util.OptionValidationException; import org.apache.seatunnel.api.options.ConnectorCommonOptions; -import org.apache.seatunnel.api.table.factory.FactoryUtil; import org.apache.seatunnel.api.table.type.ArrayType; import org.apache.seatunnel.api.table.type.BasicType; import org.apache.seatunnel.api.table.type.DecimalType; @@ -45,10 +43,7 @@ import java.net.URL; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Optional; import static org.apache.seatunnel.common.constants.CollectionConstants.PLUGIN_NAME; @@ -213,65 +208,4 @@ public class CatalogTableUtilTest { } return Paths.get(resource.toURI()).toString(); } - - @Test - void createOptionalCatalogWithValidConfig() { - Map<String, Object> configMap = new HashMap<>(); - configMap.put("username", "admin"); - configMap.put("password", "secret"); - ReadonlyConfig config = ReadonlyConfig.fromMap(configMap); - - Optional<Catalog> catalog = - FactoryUtil.createOptionalCatalog( - "test", config, Thread.currentThread().getContextClassLoader(), "InMemory"); - - Assertions.assertTrue(catalog.isPresent()); - } - - @Test - void createOptionalCatalogWithMissingRequiredOptionsThrows() { - Map<String, Object> configMap = new HashMap<>(); - configMap.put("host", "localhost"); - ReadonlyConfig config = ReadonlyConfig.fromMap(configMap); - - Assertions.assertThrows( - OptionValidationException.class, - () -> - FactoryUtil.createOptionalCatalog( - "test", - config, - Thread.currentThread().getContextClassLoader(), - "InMemory")); - } - - @Test - void createOptionalCatalogWithPartialRequiredOptionsThrows() { - Map<String, Object> configMap = new HashMap<>(); - configMap.put("username", "admin"); - ReadonlyConfig config = ReadonlyConfig.fromMap(configMap); - - Assertions.assertThrows( - OptionValidationException.class, - () -> - FactoryUtil.createOptionalCatalog( - "test", - config, - Thread.currentThread().getContextClassLoader(), - "InMemory")); - } - - @Test - void createOptionalCatalogWithUnknownFactoryReturnsEmpty() { - Map<String, Object> configMap = new HashMap<>(); - ReadonlyConfig config = ReadonlyConfig.fromMap(configMap); - - Optional<Catalog> catalog = - FactoryUtil.createOptionalCatalog( - "test", - config, - Thread.currentThread().getContextClassLoader(), - "NonExistentFactory"); - - Assertions.assertFalse(catalog.isPresent()); - } } diff --git a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/duckdb/DuckDBCatalogFactory.java b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/duckdb/DuckDBCatalogFactory.java index 53999ace8f..1e966111e7 100644 --- a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/duckdb/DuckDBCatalogFactory.java +++ b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/duckdb/DuckDBCatalogFactory.java @@ -28,13 +28,6 @@ import org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.DatabaseI import com.google.auto.service.AutoService; -import static org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions.DECIMAL_TYPE_NARROWING; -import static org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions.HANDLE_BLOB_AS_STRING; -import static org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions.PASSWORD; -import static org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions.SCHEMA; -import static org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions.URL; -import static org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions.USERNAME; - /** Factory for {@link DuckDBCatalog} */ @AutoService(Factory.class) public class DuckDBCatalogFactory implements CatalogFactory { @@ -57,9 +50,6 @@ public class DuckDBCatalogFactory implements CatalogFactory { @Override public OptionRule optionRule() { - return OptionRule.builder() - .required(URL) - .optional(USERNAME, PASSWORD, SCHEMA, DECIMAL_TYPE_NARROWING, HANDLE_BLOB_AS_STRING) - .build(); + return JdbcCommonOptions.BASE_CATALOG_RULE.build(); } } diff --git a/seatunnel-connectors-v2/connector-lance/src/main/java/org/apache/seatunnel/connectors/seatunnel/lance/catalog/LanceCatalogFactory.java b/seatunnel-connectors-v2/connector-lance/src/main/java/org/apache/seatunnel/connectors/seatunnel/lance/catalog/LanceCatalogFactory.java index 7d26b4e8ef..4235a141a4 100644 --- a/seatunnel-connectors-v2/connector-lance/src/main/java/org/apache/seatunnel/connectors/seatunnel/lance/catalog/LanceCatalogFactory.java +++ b/seatunnel-connectors-v2/connector-lance/src/main/java/org/apache/seatunnel/connectors/seatunnel/lance/catalog/LanceCatalogFactory.java @@ -35,6 +35,6 @@ public class LanceCatalogFactory implements CatalogFactory { @Override public OptionRule optionRule() { - return OptionRule.builder().build(); + return null; } }
