nzw921rx opened a new pull request, #11106:
URL: https://github.com/apache/seatunnel/pull/11106

   ### Purpose of this pull request
   
   Related: https://github.com/apache/seatunnel/issues/11007
   
   Migrate JDBC connector validation from imperative `if/throw` checks to 
declarative `OptionRule` + `Conditions.extension()`, covering Source, Sink, and 
all 15 Catalog factories.
   
   **Changes**:
   - `JdbcSourceFactory` — add declarative rules: `required(URL, DRIVER)`, 
`TableListExclusiveValidator` (rejects `table_list` coexisting with 
`table_path`/`query`), `WhereConditionPrefixValidator` (requires `where` prefix)
   - `JdbcSinkFactory` — add declarative rules: `required(URL, DRIVER, 
SCHEMA_SAVE_MODE, DATA_SAVE_MODE)`, `OracleAppendValuesValidator` (rejects 
conflicts with exactly-once, copy statement, auto_commit=false, custom query, 
insert-only upsert), `ExactlyOnceMaxRetriesValidator` (requires 
`max_retries=0`), conditional groups for exactly-once, generate_sink_sql, 
custom save mode
   - `JdbcCommonOptions` — add `baseCatalogRule()` with 
`UrlContainsDatabaseValidator` to replace per-catalog 
`Preconditions.checkArgument` / `OptionValidationException` checks; deprecate 
shared mutable `BASE_CATALOG_RULE` field
   - 13 Catalog factories (MySQL, Postgres, Oracle, SqlServer, Dameng, Iris, 
Kingbase, HighGo, OpenGauss, SapHana, TiDB, Xugu, Redshift) — remove imperative 
URL/database validation from `createCatalog()`
   - `OceanBaseCatalogFactory` — extend `baseCatalogRule()` with additional 
`.required(COMPATIBLE_MODE)`
   - `JdbcSourceConfig` — remove imperative `where_condition` prefix check (now 
in factory OptionRule)
   - `JdbcSourceTableConfig` — remove redundant `table_list` exclusive check 
(now in factory OptionRule)
   - `JdbcOutputFormatBuilder` — remove Oracle APPEND_VALUES runtime checks for 
custom query, auto_commit, exactly-once, copy statement (moved to factory 
OptionRule); keep runtime-only checks for dialect name and primary keys
   - `JdbcOutputFormatBuilderTest` — remove 3 obsolete runtime tests now 
covered by `JdbcSinkFactoryTest`
   - Add `JdbcSourceFactoryTest` (11 cases), `JdbcSinkFactoryTest` (11 cases), 
`JdbcCatalogFactoryTest` (8 cases) for declarative validation coverage
   
   ### Does this PR introduce _any_ user-facing change?
   
   Yes, minor improvements:
   
   1. Validation errors are now aggregated and returned together instead of 
failing on the first error
   2. Better validation descriptions available via REST API and CLI metadata 
export
   
   ### How was this patch tested?
   
   ```bash
   ./mvnw test -pl seatunnel-connectors-v2/connector-jdbc \
     
-Dtest="JdbcSourceFactoryTest,JdbcSinkFactoryTest,JdbcCatalogFactoryTest,JdbcFactoryTest"
   
   ./mvnw test -pl seatunnel-connectors-v2/connector-jdbc
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to