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

   ### Purpose of this pull request
   
   Yes, this is a contribution to Apache SeaTunnel: a documentation-only batch 
that fixes statements in the connector and transform docs that contradict the 
connector source code. Every fix below was verified by reading the 
corresponding `*Options` / `*Factory.optionRule()` / converter classes, and 
each issue was fixed in both the English and the Chinese document whenever both 
contain it.
   
   #### Documentation issues found and what was changed
   
   **Kafka sink / source** (`docs/{en,zh}/connectors/{sink,source}/Kafka.md`)
   - The `format` option table and the FAQ "supported formats" lists omitted 
`compatible_debezium_json` and/or `compatible_kafka_connect_json` (and 
`maxwell_json` in the sink FAQ), although `MessageFormat` defines all of them 
and the same docs already reference them elsewhere.
   - The SASL/Kerberos FAQ examples used top-level keys such as 
`kafka.security.protocol` / `kafka.sasl.jaas.config`. The connector only 
forwards properties placed inside the `kafka.config` map 
(`KafkaSinkWriter.getKafkaProperties`, 
`KafkaSourceConfig.createKafkaProperties`), so a user copying that example 
would have authentication silently ignored. The examples now use `kafka.config 
= { ... }` like the existing Kerberos task examples, with an explicit note.
   - The source doc referenced a non-existent `kafka.max.poll.records` key; 
corrected to `max.poll.records` inside `kafka.config`.
   
   **Hive sink / source** (`docs/{en,zh}/connectors/{sink,source}/Hive.md`)
   - Both docs claimed CSV / JSON (and markdown for the source) support. 
`HiveTableUtils.parseFileFormat` only accepts text/parquet/orc tables and 
throws for anything else, and the format is derived from the Hive table 
(`STORED AS`), not from a connector option. Removed those claims (including a 
whole markdown-parsing paragraph that describes a feature the Hive connector 
does not have) and the CSV/JSON `compress_codec` entries.
   - The sink FAQ invented a `file_format_type` option plus `JSON`/`SEQUENCE` 
support, and a `partition_by` option. `HiveSinkFactory.optionRule()` has 
neither; `HiveSink` always overrides `file_format_type` and `partition_by` from 
the Hive Metastore table (or from `save_mode_create_template` for auto-created 
tables). Rewrote both FAQ entries accordingly.
   - Removed a stray "path of `hive-site.xml`" sentence under `krb5_path`.
   
   **HdfsFile sink** (`docs/{en,zh}/connectors/sink/HdfsFile.md`)
   - The English feature list put `canal_json` / `debezium_json` / 
`maxwell_json` under "compress codec"; they are file formats 
(`FileFormat.java`). Moved them to the file format list and into the 
`file_format_type` row; the Chinese row was missing `xml` / `binary`, so the 
two languages now list the same formats.
   
   **StarRocks sink** (`docs/{en,zh}/connectors/sink/StarRocks.md`)
   - `batch_max_rows` is `int` and `batch_max_bytes` is `long` 
(`StarRocksSinkOptions`); the doc had them swapped. Added the missing 
`multi_table_sink_replica` row (in `StarRocksSinkFactory.optionRule()`).
   
   **Doris sink** (`docs/{en,zh}/connectors/sink/Doris.md`)
   - `database` and `table` were marked required, but 
`DorisSinkFactory.optionRule()` lists them as optional and `renameCatalogTable` 
falls back to the upstream table's database/table name. Added the missing 
`default-database` (default `information_schema`) and 
`multi_table_sink_replica` rows. The Chinese placeholder list was missing 
`rowtype_duplicate_key` (present in English and in `SaveModePlaceHolder`).
   
   **Clickhouse sink** (`docs/{en,zh}/connectors/sink/Clickhouse.md`)
   - `multi_table_sink_replica` was described as "data is written to multiple 
tables in parallel"; per `MultiTableSink`, it is the number of writer replicas 
created per table.
   
   **Jdbc sink / source** (`docs/{en,zh}/connectors/{sink,source}/Jdbc.md`)
   - Sink: documented `schema`, `decimal_type_narrowing`, `int_type_narrowing` 
and `handle_blob_as_string`, which are all in `JdbcSinkFactory.optionRule()` 
but absent from the table; `field_ide` is declared with 
`enumType(FieldIdeEnum.class)`, so its type is now `Enum` like the other enum 
options.
   - Sink appendix: the Oracle XA data source class was 
`oracle.jdbc.xa.OracleXADataSource`. In ojdbc8 (verified with `javap` on 19.18 
and 21.5) that class is **abstract**; `DataSourceUtils.loadDataSource` 
instantiates the class via `getDeclaredConstructor().newInstance()`, so this 
value fails at runtime. Replaced with the concrete 
`oracle.jdbc.xa.client.OracleXADataSource`, which is what 
`docs/*/connectors/sink/Oracle.md` already uses.
   - Source: documented `access_key_id` / `secret_access_key` / `region` 
(Amazon Aurora DSQL auth, in `JdbcSourceFactory.optionRule()` and already 
documented for the sink) and added `DSQL` to the dialect list 
(`DsqlDialectFactory` is shared by source and sink).
   
   **SqlServer sink** (`docs/{en,zh}/connectors/sink/SqlServer.md`)
   - The type mapping said `BINARY` / `VARBINARY` / `IMAGE` / `TIMESTAMP` are 
"not supported yet" and mapped `DATETIMEOFFSET` to `LOCAL_DATE_TIME`. 
`SqlServerTypeConverter` maps the former four to `BYTES` 
(`PrimitiveByteArrayType`) and `DATETIMEOFFSET` to `OFFSET_DATE_TIME_TYPE` 
(`TIMESTAMP_TZ`).
   
   **MySQL-CDC source** (`docs/{en,zh}/connectors/source/MySQL-CDC.md`)
   - `startup.specific-offset.skip-events` / `skip-rows` were documented with 
default `0`, but both are `noDefaultValue()`; the presence of these keys is 
also used by `MySqlIncrementalSource.hasSpecificStartupOffset`, so "no default, 
nothing skipped when omitted" is the accurate description.
   
   **MongoDB / TDengine / Typesense sinks** 
(`docs/{en,zh}/connectors/sink/{MongoDB,TDengine,Typesense}.md`)
   - MongoDB and TDengine: `multi_table_sink_replica` is in the factory option 
rule but missing from the tables. Typesense: `protocol` (default `http`, read 
by `TypesenseClient`, required for Typesense Cloud / https) was documented for 
the source but missing for the sink.
   
   **File sources and SQL transform**
   - `docs/{en,zh}/connectors/source/CosFile.md`: `null_format` is in 
`CosFileSourceFactory.optionRule()` and documented for every sibling file 
source, but was missing here.
   - `docs/zh/connectors/source/ObsFile.md`: removed a duplicated `sheet_name` 
row.
   - `docs/zh/transforms/sql.md`: synced the "Support struct query" changelog 
entry that only existed in the English doc.
   
   #### Files updated
   
   34 files: 17 English + 17 Chinese documents under 
`docs/{en,zh}/connectors/sink/` (Clickhouse, Doris, HdfsFile, Hive, Jdbc, 
Kafka, MongoDB, SqlServer, StarRocks, TDengine, Typesense), 
`docs/{en,zh}/connectors/source/` (CosFile, Hive, Jdbc, Kafka, MySQL-CDC, plus 
zh ObsFile) and `docs/zh/transforms/sql.md`. English and Chinese versions were 
both checked for every connector in scope; where only one language had the 
issue (e.g. the HdfsFile codec list, the zh Doris placeholder list, the zh 
ObsFile duplicate row), only that language was changed.
   
   #### Duplicate-PR check (last 7 days)
   
   - Listed all PRs created since 2026-10-12 (`gh pr list --search 
"created:>=2026-10-12"`) and collected the doc files they touch. The previous 
verified-against-source doc batches (#12758, #12771, #12813, #12833, #12865, 
#12888) do not touch any of the files in this PR; this PR was deliberately 
scoped to connectors that none of them cover.
   - Feature/fix PRs that touch some of the same files were diffed for the 
specific issues fixed here (`format` lists / SASL examples in Kafka, the Jdbc 
option rows, DSQL, the Oracle XA class, Doris/StarRocks rows, Typesense 
`protocol`, MySQL-CDC defaults): none of #12761, #12769, #12776, #12791, 
#12792, #12828, #12839, #12876, #12877, #12880, #12893, #12900, #12907 contain 
these fixes, so there is no duplication.
   - One intentional omission: merged #12804 deliberately marks `field_rules` 
of the DataValidator transform as optional with an explanatory sentence, so 
that doc was left untouched.
   - Possible textual (not semantic) conflict: open #12861 edits one line 
inside the Hive-source markdown paragraph that this PR removes (the Hive 
connector has no markdown support). Whichever merges second needs a trivial 
conflict resolution.
   
   ### Does this PR introduce _any_ user-facing change?
   
   Documentation only. No code, configuration option, default value or behavior 
is changed; the docs are corrected to describe the existing behavior.
   
   ### How was this patch tested?
   
   - Every statement above was verified against the source on `dev` 
(`MessageFormat`, `KafkaSinkWriter`, `KafkaSourceConfig`, `HiveTableUtils`, 
`HiveSink`, `HiveSinkFactory`, `FileFormat`, `StarRocksSinkOptions`/`Factory`, 
`DorisSinkFactory`/`DorisSinkOptions`, `SaveModePlaceHolder`, `MultiTableSink`, 
`JdbcSinkFactory`/`JdbcSourceFactory`/`JdbcCommonOptions`/`JdbcSinkOptions`, 
`DsqlDialectFactory`, `DataSourceUtils`, `SqlServerTypeConverter`, 
`MySqlIncrementalSourceOptions`/`MySqlIncrementalSource`, `MongodbSinkFactory`, 
`TDengineSinkFactory`, `TypesenseBaseOptions`/`TypesenseClient`, 
`CosFileSourceFactory`), and the Oracle XA class was checked with `javap` 
against the ojdbc8 19.18.0.0 and 21.5.0.0 jars.
   - Ran the same documentation build that CI runs: cloned 
`apache/seatunnel-website`, synced this branch with `tools/documents/sync.sh`, 
kept only the current/latest version in `versions.json`, and ran `npm install 
&& npm run build`. The Docusaurus build succeeded for both the `en` and `zh-CN` 
locales with no broken-link or MDX warnings for the edited pages.
   - Ran a script over all changed files checking Markdown table column 
consistency and that every relative link / `import` target exists: 0 problems.
   - `./mvnw spotless:apply` / `./mvnw -DskipTests verify` were not run because 
the change contains no Java or build files.
   
   ### Check list
   
   * [x] If any new Jar binary package adding in your PR, please add License 
Notice according
     [New License 
Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/developer/new-license.md)
 — N/A
   * [x] If necessary, please update the documentation to describe the new 
feature. https://github.com/apache/seatunnel/tree/dev/docs — this PR is the 
documentation update
   * [x] If necessary, please update `incompatible-changes.md` to describe the 
incompatibility caused by this PR. — N/A, no behavior change
   * [x] If you are contributing the connector code, please check that the 
following files are updated: — N/A, documentation only
   


-- 
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