zhangshenghang opened a new pull request, #13050:
URL: https://github.com/apache/seatunnel/pull/13050
## Purpose of this PR
This PR acknowledges the contribution to Apache SeaTunnel and fixes a batch
of real documentation inaccuracies found by comparing the English and Chinese
connector/transform docs against the actual source code on the current `dev`
branch.
## Documentation issues found and fixed
**Option tables vs. code (names, types, defaults, required flags):**
- `PostgreSQL` source: `driver` description told users to set the **MySQL**
driver class (`com.mysql.cj.jdbc.Driver`) on the PostgreSQL page; corrected to
`org.postgresql.Driver`. `query` was marked required, but code only requires
`url` + `driver` (`JdbcSourceFactory`), so it is now conditional like sibling
dialect pages.
- `DB2` source: `query` was marked required although code requires only
`url` + `driver`.
- JDBC family (`Mysql`, `Oracle`, `SqlServer`, `PostgreSQL` sources):
`partition_lower_bound` / `partition_upper_bound` were typed `BigDecimal` or
`Long`, but `JdbcSourceOptions` declares them as `stringType()`;
`partition_num` default was documented as "job parallelism" while
`JdbcSourceTableConfig.DEFAULT_PARTITION_NUMBER` is `10`.
- `LLM` transform: `api_key` was marked unconditionally required, but
`LLMTransformFactory` declares it conditionally required
(OPENAI/DOUBAO/MICROSOFT) and unused for `CUSTOM`.
- `Copy` transform: `fields` was typed `Object`; `CopyTransformConfig`
declares a `mapType()` (Map).
- `Http` sink: `multi_table_sink_replica` default `-`, but
`SinkConnectorCommonOptions` defaults it to `1`.
**Data-type mapping tables vs. converters:**
- `Clickhouse` source: `Int8 / UInt8 / Int16 / UInt16 / Int32 → INT` split
into `Int8 → TINYINT`, `UInt8 / Int16 → SMALLINT`, `UInt16 / Int32 → INT` per
`TypeConvertUtil`; `DateTime → TIME` corrected to `TIMESTAMP`.
- `Clickhouse` sink: `INT → Int8/UInt8/Int16/UInt16/Int32` corrected to `INT
→ Int32` and added `TINYINT → Int8`, `SMALLINT → Int16` per
`ClickhouseTypeConverter`; `TIME → DateTime` corrected to `TIME → String`,
added missing `TIMESTAMP → DateTime64` row.
- `StarRocks` sink: `DATE/DATETIME/ARRAY/MAP → STRING` corrected to `DATE →
DATE`, `DATETIME → TIMESTAMP`, `ARRAY → ARRAY`, `MAP → MAP` per
`StarRocksTypeConverter`.
- `Mysql` source/sink: `TIMESTAMP → TIMESTAMP(s)` corrected to
`TIMESTAMP_TZ` (UTC-stored, `MySqlTypeConverter`); sink table split
`TINYINT/TINYINT UNSIGNED/SMALLINT/... → INT` into the correct `TINYINT →
TINYINT`, `TINYINT UNSIGNED/SMALLINT → SMALLINT`, rest → `INT` rows; removed
the contradictory `INT UNSIGNED → BOOLEAN` grouping; `GEOMETRY` moved from "Not
supported yet" to `BYTES`.
- `Oracle` source/sink: `NUMBER(18 < p, s == 0) → DECIMAL(38, 0)` and
`NUMBER(s != 0) → DECIMAL(38, 18)` corrected to preserved `DECIMAL(precision,
0)` / `DECIMAL(precision, scale)` per `OracleTypeConverter`; `TIMESTAMP WITH
(LOCAL) TIME ZONE → TIMESTAMP` corrected to `TIMESTAMP_TZ`.
- `SqlServer` source: `DATETIMEOFFSET` moved out of the `TIMESTAMP(s)` group
to `TIMESTAMP_TZ`; sink `DECIMAL → DECIMAL((column size)+1, scale)` corrected
to preserved `DECIMAL(precision, scale)`.
- `PostgreSQL` source/sink: unsupported `_BYTEA → ARRAY<TINYINT>` row
corrected (no `_bytea` case in `PostgresTypeConverter`); sink
`INT2/SMALLSERIAL` separated from `INT4/SERIAL` (`SMALLINT` vs `INT`); source
`TIMESTAMPTZ(s) → TIMESTAMP(s)` corrected to `TIMESTAMP_TZ`.
- `DB2` source: `DECIMAL → DECIMAL(38,18)` corrected to preserved
`DECIMAL(precision, scale)`.
**Feature checkboxes vs. reader/sink implementation:**
- `TDengine` source: unchecked `exactly-once` (splits carry no offsets,
re-sent after restore) and `column projection` (`TDengineSource` does not
implement `SupportColumnProjection`).
- `TDengine` sink: unchecked `exactly-once` (simple sink writer, no
two-phase commit).
- `Milvus` source: unchecked `exactly-once` (in-progress partitions are
re-scanned from the beginning, matching the doc's own Notes).
- `InfluxDB` source: unchecked `exactly-once` (splits are re-read from the
start on restore).
- `Phoenix` source: unchecked `stream` (it wraps the bounded JDBC reader,
whose own page marks stream as unsupported).
**Behavior descriptions and placeholders:**
- `Http-Linear` source: corrected two claims — `binary` format and
`binary_chunk_size` ARE inherited and effective from `HttpSource`, and
pagination IS supported through the HTTP `pageing` block (both contradicted
`LinearSource extends HttpSource`).
- `Doris` sink FAQ: "uses JSON format for Stream Load by default" corrected
— `doris.config` is required and `format` must be set explicitly or startup
fails (`SeaTunnelRowSerializerFactory` NPEs).
- Chinese `Doris`/`StarRocks` sink default `save_mode_create_template`
examples used the deprecated `${table_name}` placeholder while the code default
and English docs use `${table}`; aligned to `${table}`.
- `Redis` sink: `LIST` "append" corrected to "add to the head of the list
(`LPUSH`)" per `RedisSingleClient`; matching example heading fixed in the
`Redis` source page.
- `JsonPath` transform: fixed the SeatunnelRow example table column order —
extracted fields are appended after the original columns
(`MultipleFieldOutputTransform`).
- Chinese `Mysql` sink: fixed garbled duplicated `DECIMAL((DECIMAL((...`
cell text.
## Files updated
49 files (25 English + 24 Chinese) across `docs/en|zh/transforms` (copy,
jsonpath, llm) and `docs/en|zh/connectors` (source/sink of Clickhouse, Doris,
StarRocks, Mysql, Oracle, SqlServer, DB2, PostgreSQL/PostgreSql, Phoenix,
Redis, TDengine, Milvus, InfluxDB, Http, Http-Linear). Full list in the commit.
## Both English and Chinese docs checked
Yes. Every fix was applied to the English doc and its Chinese counterpart
where the same wrong content exists. The Chinese-only deviations
(`${table_name}` templates, garbled DECIMAL cell) were fixed so zh matches en
and the code.
## Duplicate PR check
Checked all PRs created in the last 7 days (`gh pr list --search
"created:>=2026-10-21"`): the recent docs PRs #13019, #12993, #12986, #12971
(open) and #12951, #12941 (merged) were reviewed and their changed-file lists
(retrieved via the API) were excluded from this batch. This PR does not touch
any file or issue covered by those PRs (different connectors, different
transforms, and different problems). #12981 (FieldMapper, another contributor)
was also avoided.
## Verification
- Cross-checked every changed row/claim against the connector/transform
source code (converters, factory option rules, reader/snapshotState
implementations) before editing.
- Validated all changed markdown files programmatically: every table row has
consistent pipe counts, and every relative link in the changed files resolves
to an existing file.
- Not run locally: the CI "Build website" Docusaurus job (it checks out the
separate `apache/seatunnel-website` repo and runs a full npm install/build);
the changes are table/text-only with no structural markdown changes, so the
above checks cover the risk.
--
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]