This is an automated email from the ASF dual-hosted git repository.
nzw921rx pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new cc54bb4333 [Fix][Transform-V2] Restore archived LLM wrapper
deserialization (#12938)
cc54bb4333 is described below
commit cc54bb433357b4cb45db9cd5d0743589c3111b79
Author: JeremyXin <[email protected]>
AuthorDate: Thu Oct 22 18:26:40 2026 +0800
[Fix][Transform-V2] Restore archived LLM wrapper deserialization (#12938)
Co-authored-by: JeremyXin <--golbal>
---
.../jdbc/JdbcOptionRuleCompletenessTest.java | 27 ++++++++++++++++++++--
.../common/AbstractMultiCatalogTransform.java | 6 ++++-
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOptionRuleCompletenessTest.java
b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOptionRuleCompletenessTest.java
index bb8ea91d84..1f1276befa 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOptionRuleCompletenessTest.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOptionRuleCompletenessTest.java
@@ -21,6 +21,7 @@ import org.apache.seatunnel.api.configuration.Option;
import org.apache.seatunnel.api.configuration.ReadonlyConfig;
import org.apache.seatunnel.api.configuration.util.ConfigValidator;
import org.apache.seatunnel.api.configuration.util.OptionRule;
+import org.apache.seatunnel.api.configuration.util.OptionValidationException;
import org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcCommonOptions;
import org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcSinkOptions;
import org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcSourceOptions;
@@ -40,7 +41,7 @@ import java.util.Map;
import java.util.Set;
/**
- * Every option the Jdbc connector defines must be declared in the factory
option rule.
+ * Every applicable Jdbc option must be declared in its source or sink factory
option rule.
*
* <p>{@code --check}, {@code --dry-run} and the Flink/Spark config validation
reject any key that
* is not declared in the rule ({@link ConfigValidator#validateUnknownKeys}),
so a defined but
@@ -54,6 +55,10 @@ class JdbcOptionRuleCompletenessTest {
Collections.unmodifiableSet(
new
HashSet<>(Arrays.asList(JdbcCommonOptions.SCHEMA.key())));
+ /** Source-only options that the sink does not read. */
+ private static final Set<String> NOT_SINK_OPTIONS =
+
Collections.singleton(JdbcCommonOptions.NUMERIC_SPECIAL_VALUE_AS_NULL.key());
+
@Test
void testSourceRuleDeclaresAllSourceOptions() {
assertAllDeclared(
@@ -65,7 +70,25 @@ class JdbcOptionRuleCompletenessTest {
void testSinkRuleDeclaresAllSinkOptions() {
assertAllDeclared(
new JdbcSinkFactory().optionRule(),
- collectOptionKeys(JdbcSinkOptions.class,
Collections.emptySet()));
+ collectOptionKeys(JdbcSinkOptions.class, NOT_SINK_OPTIONS));
+ }
+
+ @Test
+ void testNumericSpecialValueAsNullIsSourceOnly() {
+ String key = JdbcCommonOptions.NUMERIC_SPECIAL_VALUE_AS_NULL.key();
+ ReadonlyConfig config =
ReadonlyConfig.fromMap(Collections.singletonMap(key, true));
+
+ Assertions.assertDoesNotThrow(
+ () ->
+ ConfigValidator.validateUnknownKeys(
+ config, new JdbcSourceFactory().optionRule(),
"Jdbc"));
+ OptionValidationException exception =
+ Assertions.assertThrows(
+ OptionValidationException.class,
+ () ->
+ ConfigValidator.validateUnknownKeys(
+ config, new
JdbcSinkFactory().optionRule(), "Jdbc"));
+ Assertions.assertTrue(exception.getMessage().contains(key));
}
private static void assertAllDeclared(OptionRule rule, Set<String>
optionKeys) {
diff --git
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/common/AbstractMultiCatalogTransform.java
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/common/AbstractMultiCatalogTransform.java
index aafe181023..4b3415dab7 100644
---
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/common/AbstractMultiCatalogTransform.java
+++
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/common/AbstractMultiCatalogTransform.java
@@ -40,13 +40,17 @@ import java.util.stream.Collectors;
*/
public abstract class AbstractMultiCatalogTransform implements
SeaTunnelTransform<SeaTunnelRow> {
+ private static final long serialVersionUID = 7090258061839605137L;
+
protected List<CatalogTable> inputCatalogTables;
protected List<CatalogTable> outputCatalogTables;
protected Map<String, SeaTunnelTransform<SeaTunnelRow>> transformMap;
- protected final ReadonlyConfig transformLevelConfig;
+ // Used only while constructing the per-table transforms; the constructed
transforms are
+ // serialized.
+ protected final transient ReadonlyConfig transformLevelConfig;
public AbstractMultiCatalogTransform(
List<CatalogTable> inputCatalogTables, ReadonlyConfig config) {