Add OpenMLDB multi-table source support
Added sequential multi-query reads through the common `tables_configs` option, with per-query schemas, output table identities, and optional database overrides.
apache/seatunnel · #12303
Connector capability and correctness improvement
One OpenMLDB source can execute multiple schema-aware queries while preserving table identity and SQL nulls.
Problem
The OpenMLDB source accepted only one root-level SQL query and relied on SDK input-schema discovery. Queries with different result schemas required separate source configurations, while validation also exposed null, row-reuse, connection-ownership, and cluster-query correctness issues.
Approach
Validates unique output identities and configured result schemas, matches aliased columns by case-sensitive names, preserves nullable values, copies reused row arrays, keeps shared connections alive across readers, and directs cluster reads to online rows instead of the offline-job path. Existing root-level SQL remains supported.
Impact and scope
- Allows a single source configuration to emit records from multiple OpenMLDB queries with distinct schemas and table identities.
- Fails mismatched names, counts, and types instead of silently mapping incompatible results, and reports completion only after every query succeeds, including empty results.
- Corrects SQL NULL handling and reader isolation while preserving existing connector options, defaults, registration, and SDK version.
- This does not add parallelism, CDC, exactly-once delivery, or a consistent snapshot across tables. Streaming repeats configured queries and can emit duplicates.
Validation
- Twenty-nine connector unit tests passed on Java 8 and Java 11; the Java 11 dependency reactor passed 506 tests with no failures, errors, or skips.
- Five opt-in real-server integration tests passed against OpenMLDB 0.6.3 in Java 8/11 and standalone/cluster combinations: 20 executions verifying 1,101 complete unique rows, nullable values, schemas, aliases, empty results, isolation, failures, and completion.
- GitHub Build passed, maintainer davidzollo approved with 'Good job,' and the verified merge commit credits Goutam Adwant.
- The real-server tests require Linux amd64 and a disposable server. Zeta, Flink, and Spark engine E2E validation was not reported and is not implied by connector-level testing.